依赖单元测试
Dependent unit tests
我有一个程序可以根据参数对象作为输入和存储在数据库中的信息给出输出。
我正在尝试用 2 个测试用例测试这个程序,第一个没有给出参数。然后我的程序将创建一个默认参数对象并将其 return 作为输出的一部分,然后第二个测试将对参数对象进行特定更改并将其作为输入返回给程序。
目前我正在通过将两个测试用例合并为一个来做到这一点,以便能够将参数对象保存在局部变量中并更改它并将其用于第二个:
def test_function:
testData = {'name':"Test"}
response = self.app.post('/test', data=testData)
# make assert statements for first response
parameters = json.loads(response.data)['parameters']
parameters['foo'] = "bar"
testData['parameters'] = parameters
response = self.app.post('/test', data=testData)
# make assert statements for second response
有什么办法可以在两个单独的测试用例中做到这一点?或者更重要的是,我是否应该在两个单独的测试用例中执行此操作,因为如果第一个不起作用,第二个将无法 运行?
我无法对第二个测试用例的参数对象进行硬编码,因为它依赖于数据库中的数据,测试的部分原因是查看程序是否适用于 different/no 数据。
如果您想使用已知的开始状态开发多个测试,请考虑使用 setUp
函数。
这是来自 python 网站的一个简单示例:
import random
import unittest
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.seq = range(10)
def test_shuffle(self):
# make sure the shuffled sequence does not lose any elements
random.shuffle(self.seq)
self.seq.sort()
self.assertEqual(self.seq, range(10))
# should raise an exception for an immutable sequence
self.assertRaises(TypeError, random.shuffle, (1,2,3))
def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
if __name__ == '__main__':
unittest.main()
我有一个程序可以根据参数对象作为输入和存储在数据库中的信息给出输出。
我正在尝试用 2 个测试用例测试这个程序,第一个没有给出参数。然后我的程序将创建一个默认参数对象并将其 return 作为输出的一部分,然后第二个测试将对参数对象进行特定更改并将其作为输入返回给程序。
目前我正在通过将两个测试用例合并为一个来做到这一点,以便能够将参数对象保存在局部变量中并更改它并将其用于第二个:
def test_function:
testData = {'name':"Test"}
response = self.app.post('/test', data=testData)
# make assert statements for first response
parameters = json.loads(response.data)['parameters']
parameters['foo'] = "bar"
testData['parameters'] = parameters
response = self.app.post('/test', data=testData)
# make assert statements for second response
有什么办法可以在两个单独的测试用例中做到这一点?或者更重要的是,我是否应该在两个单独的测试用例中执行此操作,因为如果第一个不起作用,第二个将无法 运行?
我无法对第二个测试用例的参数对象进行硬编码,因为它依赖于数据库中的数据,测试的部分原因是查看程序是否适用于 different/no 数据。
如果您想使用已知的开始状态开发多个测试,请考虑使用 setUp
函数。
这是来自 python 网站的一个简单示例:
import random
import unittest
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.seq = range(10)
def test_shuffle(self):
# make sure the shuffled sequence does not lose any elements
random.shuffle(self.seq)
self.seq.sort()
self.assertEqual(self.seq, range(10))
# should raise an exception for an immutable sequence
self.assertRaises(TypeError, random.shuffle, (1,2,3))
def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
if __name__ == '__main__':
unittest.main()