testscenarios 是 python单元测试模块的扩展,支持使用不同的场景运行测试。
应用场景:
1、对某个对象的不同版本运行一组测试
2、对一组不同的对象运行同一个测试
3、对不同的驱动执行相同的测试集,有点类似2
3基本上涵盖了1 和 2,所以以三为例。
要实现场景3,一般的方法时mixin class:该类既包含单元测试的类,又包含特定驱动用法的设置
看一个例子:
import unittest
class MongoDBBaseTest(unittest.TestCase):
def setUp(self):
self.connection = connect_to_mongodb()
class MySQLBaseTest(unittest.TestCase):
def setUp(self):
self.connection = connect_to_mysql()
class TestDatabase(unittest.TestCase):
def test_connected(self):
self.assertTrue(self.connection.is_connected())
class TestMongoDB(MongoDBBaseTest,TestDatabase):
pass
class TestMySQL(MySQLBaseTest,TestDatabase):
pass
上面的方法从长期维护的角度,实用性和可扩展性都不好。
下面 testscenarios 上场了,它运行时能够生成一组不同的场景,并将这些场景提供给类进行测试。
上面的例子用 testscenarios实现是这样的:
import testscenarios
class TestDatabase(testscenarios.TestWithScenarios):
scenarios = [
('MongoDB',dict(connection=connect_to_mongodb())),
('MySQL',dict(connection=connect_to_mysql())),
]
def test_connected(self):
self.assertTrue(self.connection.is_connected())
scenarios 定义场景列表,场景名称是第一个元素,针对改场景的属性字典是第二个元素。
上面的例子中如果需要添加其他场景,只需要扩展scenarios。也可以添加其他test对这一组场景执行其他测试。
详细参考:
原文:
阅读(1690) | 评论(0) | 转发(0) |