pytest-基础

一.使用pytest,默认的测试用例的规则以及基础应用

1.模块名字必须已test_开头或者_test结尾

2.测试类必须以Test开头,并且不能有init方法

3.测试方法必须以test开头

示例代码 test_001.py

import pytest
class TestCase:
    def test_case(self):
        print("执行测试用例")

二、pytest测试用例的运行方式

主函数模式:

        运行所有:pytest.main()

        运行指定的模块:pytest.main(['-vs',模块名.py])

        运行指定目录:mytest.main(['-vs','目录路径'])

        通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

                ·类外的用例通过pytest.main(['-vs','模块路径::方法名'])

                ·类内的用例:pytest.main('-vs','模块路径::类名::方法名')

        命令行模式:

                ·运行所有:pytest

                ·运行指定模块:pytest -vs 目录路径

                ·通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数组成

                        ·类外的用例:pytest -vs 模块名::方法名

                        ·类内的用例:pytest -vs 模块路径::类名::方法名

        pytest.ini配置文件模式

                pytest.ini是pytest单元测试框架的核心配置文件

                        位置:必须放在项目的根目录

                        编码格式,必须使用ANSI格式,可用notepad++等工具修改、

                        作用:改变pytest默认的行为

                        运行的规则:主函数模式和命令行模式都会读取这个配置文件

配置文件实例:

[pytest]
#命令行参数,用空格分割
addopts = -vs
#测试用例文件,可以自己配置,...../testcase为上已成的testcase文件夹
testpaths = ../testcase
#配置测试搜索的模块文件名称
pytest_files = test*.py
#配置测试搜索的测试类名
pytest_classes = Test*
#配置测试搜索的测试函数名
pytest_funtions = test

  以上为示例代码,用的时候需要把中文去掉,使用ANSI编码格式保存

参数详解:

·-s:输出调试信息,包括print打印的信息

·-v:显示更多详细的信息

·-n:支持多线程或者分布式运行测试用例

        ·主函数模式:pytest.main('-vs','模块名.py','-n=2')--->调用两个线程执行

         命令行模式:pytest -vs 模块名.py -n 2

                如果有5条用例用两个线程

                线程一:1,3,5

                线程二:2,4条

         ·--reruns:失败用例重跑        

                主函数模式:pytest.main(['-vs','模块名.py','-n=2','--reruns=2'])

                命令行模式:pytest -vs 模块名.py -n = 2 --reruns=2

                        失败后重跑两次

        ·-x:遇到报错测试用例则立即停止测试

        ·--mafail:遇到指定个数用例失败就停止测试

                主函数模式:pytest.main(['-vs','模块名.py','--maxfail=2'])

                命令行模式:pytest -vs 模块名.py --mafail=2

        · -k:根据测试用例名称内的部分字符串指定执行测试用例

                主函数模式:pytest.main(['-vs','模块名.py','-k=xx'])

                命令行模式:pytest -vs 模块名.py -k= 'xx'

        ·--html:生成原生html测试的报告

                主函数模式:pytest.main(['-vs','模块名.py','--html=报告路径'])

                命令模式:pytest -vs 模块名.py --html '报告路径'

        ·-vs:综合 -s,-v功能

分布式

使用pytest-xdist分布式测试执行测试用例

参数-n auto :可以自动检测系统的CPU核数

注意:使用auto等于利用了所有CPU来跑用例,此时CPU占用率会特别高。如果指定核数可将auto替换为具体的数字

分布式执行在根目录下输入执行命令:pytest -s -v -n auto,
 

三、pytest的测试执行循序

        ·unittest的执行顺序:默认按照ASCII表的顺序执行测试用例

        ·pytest的执行顺序:默认按照从上到下的顺序执行测试用例

                改变pytest的默认执行循序:使用mark中装饰器

                

@pytest.mark,run(order=3)

四、如何分组执行(冒烟,分模块执行,分接口或者ui执行)

        smoke:莫言用例,分布在各个模块里面

                步骤一:在pytest.ini配置文件内添加配置信息:markers

                

[pytest]
addopts = -vs
testpaths = ../testcase
python_files = test*.py
python_classes = Test*
python_functions = test
markers =
smoke:冒烟
g1:组一
g2:组二

               步骤二:给测试函数添加装饰器@pytest.mark.smoke

                步骤三:执行测试用例:

                        主函数模式:pytest.main(['-vs','模块名.py','-m=smoke'])

                        命令行模式:pytest -vs -m 'smoke'

                                注意:此处的smoke不是固定的,可以自己定义标记名称

                                 如果想执行多个标记的用例:pytest -vs -m '标记1' or '标记2'

五、pytest跳过测试用例

        无条件跳过:

               添加装饰器:@pytest.mark,skip(reason = "跳过原因")

        有条件跳过:

                添加装饰器:@pytest.mark.skipif(表达式,reason = '跳过原因')

                        注意:此处的表达式得到的应该是一个布尔类型,表达式成立则跳过,否则执行测试用例

六、断言

在pytest框架中使用assert进行断言

        示例代码

                

class TestCase:
# 测试用例
def test_case(self):
print("执行测试用例")
# 断言:语法assert 表达式
assert 1 == 2

注意:assert后面的表达式需要返回布尔值类型,True为测试用例通过,False为用例失败

              

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XuMeng_first

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值