pytest参数化自定义测试用例标题【@pytest.mark.parametrize(ids=XXX)】(pytest标签)

网友投稿 376 2022-08-28


pytest参数化自定义测试用例标题【@pytest.mark.parametrize(ids=XXX)】(pytest标签)

前言:

ids含义:用例的ID格式:传一个字符串列表作用:可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性强调:ids列表的长度需要与测试数据列表的长度一致

pytest使用装饰器@pytest.mark.parametrize进行参数化后,在控制台或者测试报告中的测试用例标题都是以参数组合起来命名的【在测试用例的后面跟中括号里面的内容】,这样的标题看起来不太直观;

我们想要展示我们自己定义的标题,这时候需要用到装饰器@pytest.mark.parametrize参数化的另外一个参数ids来实现。

没有使用ids之前:

# file_name: test_parametrize.pyimport pytestdef return_user(): return [('lwjnicole', '12345'), ('nicole', '123111')]class Test_D: @pytest.mark.parametrize("username,password",return_user()) def test_login(self, username, password): print("username = {}, password = {}".format(username, password)) assert username == "lwjnicole"if __name__ == '__main__': pytest.main(['-s', 'test_parametrize.py'])

运行结果:

从结果中可以看到当测试用例数据参数化的时候用例的标题是由所有参数组合而来的,这样看起来不怎么直观。

使用ids自定义测试用例标题

# file_name: test_parametrize.pyimport pytestdef return_user(): return [('lwjnicole', '12345'), ('nicole', '123111')]class Test_D: @pytest.mark.parametrize("username,password", return_user(), ids=[ "login success", "login fail" ]) def test_login(self, username, password): print("username = {}, password = {}".format(username, password)) assert username == "lwjnicole"if __name__ == '__main__': pytest.main(['-s', 'test_parametrize.py'])

运行结果:

从结果中可以看到用例的标题已经不再是各参数的组合了,而是我们在参数ids中定义的,这样我们就实现了测试用例标题的自定义。

一个更直观的例子:

可以将用例的测试点显示在每一条测试用例的后面,是测试效果显示更直观。

去期待陌生,去拥抱惊喜。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java实现马踏棋盘算法(骑士周游问题)
下一篇:pytest重复运行所有或指定测试用例(pytest-repeat插件)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~