https://testerhome.com/topics/18111
如上个问题所示,请教大家如何才能一个一个添加用例呢?
suit = unittest.TestSuite()
suit.addTest(TestEnv('test_load_page'))
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suit)
一般这样是没问题的,加上 ddt 就提示找不到 test_load_page 了
报错如下:
AttributeError: type object 'TestEnv' has no attribute 'test_load_page'
但是有时候需要执行某些用例,不执行其他用例,这样的情况应该怎么办呢?
已解决。
ddt 源码中有个函数用来生成用例名称—— mk_test_name
它接收两个参数:name 和 value。
name:为测试用例的名字。即 test_load_page;
value:为测试数据,ddt 是处理一组测试数据。而这个 value 就是这一组数据中的每一个测试数据。
对 value 的值是有限制的:要么就是单值变量,要么就是元组或者列表并且要求元组和列表中的数据都是单值变量。如 ("name","port") 、["name","port"]
如果传进来的测试数据,不符合 value 的要求,那么测试用例名字为:name_index。
如果传进来的测试数据,符合 value 的要求,那么测试用例名字为:name_index_value。如果 value 为列表或者元组,那么将列表/元组的每个数据依次追加在末尾。
比如传进来的 name 值为 test_login,value 值为 ["name","port"]。那最终的测试用例名字是:test_load_page_01_name_port。
如果传进来的 name 值为 test_login,value 值为{"userName":"18500384561", "password":"123456"},那最终的测试用例名字为:test_load_page_1。 因为它不支持对字典类型的数据处理 。
所以我得到的测试用例名称就是:test_load_page_1test_load_page_2,test_load_page_3