Selenium实战(八)——pytest单元测试(3)

一、pytest的参数化

  在一组测试用例有固定的的测试数据,可以通过参数化的方式简化测试用例的编写。pytest本身支持参数化,不需要额外安装插件。创建test_parameterize.py文件:

 1 import pytest
 2 import math
 3 # pytest参数化
 4 
 5 @pytest.mark.parametrize(
 6     "base, exponent, expected",
 7     [(2, 2, 4),
 8      (2, 3, 8),
 9      (1, 9, 1),
10      (0, 9, 0)],
11     ids=["case1", "case2", "case3", "case4"]
12     )
13 def test_pow(base, exponent, expected):
14     assert math.pow(base, exponent) == expected

   用法与unittest的参数化插件类似,通过pytest.mark.parameterize()方法设置参数。

  "base,exponent,expected"用来定义参数的名称。通过数组定义参数时,每一个元组都是一条测试用例的测试数据。ids默认为None,用于定义测试用例的名称。

 “-v”参数增加测试用例冗长。

二、运行测试

  参数用法:

  • -s 关闭捕捉,从而输出打印信息
  • -v 增加测试用例冗长

可以通过'pytest --help'查看帮助

1.运行名称中包含某字符串的测试用例  -k

   在test_assert.py文件中共有11个测试用例,其中有四条是关于add()功能的,并且在测试用例的名称上包含了“add”字符串,So可以通过“-k”来指定在名称中包含“add”的测试用例。

2.减少测试运行的冗长 -q

   也可以使用“--quiet”代替。

3.如果出现一条测试用例失败,则退出测试 -x

 

   这在测试用例的调试阶段是有用的,当出现一条失败的测试用例时,应该先通过调试让这条测试用例运行通过,而不是继续执行后面的测试用例。

4.运行测试目录

   测试目录既可以指定相对路径,也可以是绝对路径。

5.指定特定类或方法执行

   这里指定运行test_fixture_02.py文件中TestMultiply类下的test_numbers_5_6()方法,文件名、类名和方法名之间用::符号分隔。

6.通过main()方法运行测试

  创建run_tests.py文件,在文件中通过数组指定参数,每个参数为数组中的一个元素。

1 import pytest
2 
3 if __name__ == '__main__':
4     pytest.main(['-s', '.'])

posted @ 2020-03-05 18:02  pegawayatstudying  阅读(192)  评论(0编辑  收藏  举报