pytest.main()的使用

1. pytest的两种运行模式,一种是命令行运行,另外一种是调用pytest.main() 运行

2. pytest.main() 运行模式时,不添加任何参数,表示运行当前目录下的所有的测试文件;

  2.1 main()方法中不填写任何参数,表示运行当前目录下的所有的测试文件;

  2.2 添加参数:pytest.main(['-s','-v','-k "print"',''])

    (1)‘-s’:关闭捕捉,输出打印信息;----就是运行的时候是否出入代码里边的一些打印信息,比如你的测试代码里边包含了print语句,则print的内容会显示出来;如果不填写该参数,则print语句的值不会        打印出来
    (2)‘-v’:用于增加测试用例的冗长。---没太看懂到底代表啥意思,等看懂了再补充上,这是复制的别人的
    (3)‘-k’ :运行包含某个字符串的测试用例。如:pytest -k add XX.py 表示运行XX.py中包含add的测试用例。
    (4)‘q’:减少测试的运行冗长。
    (5)‘-x’:出现一条测试用例失败就退出测试。在调试阶段非常有用,当测试用例失败时,应该先调试通过,而不是继续执行测试用例

  2.3 要执行测试用例的过滤方法:

    (1)指定某个测试类或测试方法,用“::”隔开。如:命令格式:pytest 文件名.py::测试方法 ,pytest.main([模块.py::类或方法]) ,pytest 文件名.py::测试类::测试方法 ,pytest.main([模块.py::类::方法])

     

3. python文件中包含如下代码,则可运行当前目录下,的测试类或者测试方法(以test_开头或者以test结尾的类.py文件,以test_开头的测试方法,具体可参照配置文件),同时使用到多个参数时,格式如下:  

if __name__ =="__main__":
    pytest.main(['-s','-k print', 'add/test_second.py::test_noprint_cock'])

************************************************************************************************************************************************************************

4.pytest的配置文件

  1. 配置文件放在哪里?---放在项目的根目录下边,不要乱放!   4.1 文件名需要命名为:pytest.ini   4.2 文件结构及参数如下:
[pytest]
addopts = -v -s --html=py_test/scripts/report/report.html -p no:warnings  --reruns=1  ,配置运行时的参数
testpaths = ./py_test/scripts,配置要跑的脚本在哪个目录下
python_files= test_rerun.py,配置测试文件匹配模式
python_classes = Test*,配置测试类的匹配模式,比如这个是类文件以Test开头,则可以匹配到
python_function = test*,配置函数 、方法匹配模式,比如这个是以test开头则可以匹配到
xfail_strict = true,配置是否允许预期失败的用例存在
-s:表示输出调试信息,包括 print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n :支持多线程或者分布式运行测试用例
     如:pytest -vs ./testcase/test_login.py -2
--html : 测试报告位置
--reruns : 失败重跑
-p no:warnings  : 取消警告
--ff : 先执行上次失败的用例
--lf : 只执行上次失败的用例
-x : 遇到测试用例fail,就结束测试
--maxfail=num:遇到num条测试用例fail, 就结束测试
-k :根据测试用例的部分字符串指定测试用例
    如:pytest -vs ./testcase -k “ao”

 

 5. pytest的配置文件   

****************************************************************************************************************************************************************

6. pytest的mark标签

 

 

 

6.1 pytest.skip (用于函数内,跳过测试用例)

 

1
2
3
4
def test_2():
    if 1 < 2:
        pytest.skip('1111111')
    pass

 

@pytest.mark.skip(用于函数外,跳过测试用例)

 

1
2
3
4
5
6
@pytest.mark.skip(reason='feature not implemented')
def test_1():
    pass
  
# 模块级别跳过。(注:参数allow_module_level的值设为True)
pytest.skip('skip all tests', allow_module_level=True)

 

@pytest.mark.skipif(用于函数外,条件condition,跳过原因reason="xxx")

 

1
2
3
@pytest.mark.skipif(condition='1<2',reason='feature not implemented')
def test_1():
    pass

 

************************************************************************************************************************************************************************

6.2 ordering-执行顺序

 

  1. 控制用例执行顺序的方法
  2. 在需要调整用例执行顺序的函数(或方法)前增加

 

@pytest.mark.run(order=x) x表示

 

3.数字数字形式: 小数、整数、负数

执行顺序:

1、由小到大

2、由正到负

3、未标记 的在正数后,负数前执行

顺序: 1,2,3,无标记,-3,-2,-4

 

*******************************************************************************************************************************************************

6.3 xfail 预期失败

xfail(condition, reason)
--condition 预期失败的条件
--reason 预期失败的原因

xfail-strict=true ,则只要被pytest.mark.xfail 标记的方法,结果都为失败;若xfail-strict=false,则被pytest.mark.xfail标记得方法,按照实际执行结果来看成功还是失败的

pytest.ini加参数,

不希望出现 预期失败结果成功 的情况
就在配置文件中添加一个参数:
xfail_strict = true

 

 

6.5 @pytest.mark.parametrize("mobile,code", [(121,212),(123,321)]) 

 

 

6.6  rerunfailure-失败重跑

失败重跑机制
安装pytest-rerunfailure
在设置文件pytest.ini中添加命令
reruns = 重跑次数
addopts = --reruns=10

 

6.7 自定义的pytest.mark的使用

 

posted on 2020-11-21 18:30  ClareBaby01  阅读(5853)  评论(0)    收藏  举报