zoukankan      html  css  js  c++  java
  • 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', '.'])

  • 相关阅读:
    Atcoder Grand Contest 038 F
    洛谷 P5502
    Codeforces 1010F
    洛谷 P4621
    洛谷 P5518
    Oracle-切换当用用户的模式
    Oracle-DBV数据文件校验工具
    【转载】Oracle-通过增量备份前滚的反手解决物理备库归档缺失,损坏,gap问题
    Oracle-对比SAA与STA
    Oracle-SAA
  • 原文地址:https://www.cnblogs.com/pegawayatstudying/p/12421665.html
Copyright © 2011-2022 走看看