ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytest基础使用

2022-06-22 03:31:08  阅读:146  来源: 互联网

标签:python 基础 用例 pytest 使用 test 测试用例 运行


pytest

默认规则

  • 模块名以test_开头或者_test结尾
  • 测试类以Test开头,并且不能有init方法
  • 测试用例以test开头

pytest相关插件
pytest-html 生成html测试报告
pytest-xdist 测试用例多线程执行
pytest-ordering 改变用例执行顺序
pytest-rerunfailures 用例失败重跑
allure-pytest 生成测试报告

1.运行方式

1.1 主函数运行方式

#运行所有
pytest.main()

#指定模块运行
pytest.main(['test_login.py'])

#指定目录运行
pytest.main(["./testcase"])

1.2 命令行方式运行

#运行所有
pytest

#指定模块运行
pytest test_login.py

#指定目录运行
pytest ./testcase

1.3 命令行及主函数运行参数详解

  • -s: 表示输出调试信息
  • -v: 显示更详细的信息
  • -n: 支持多线程运行用例,
  • -x:只要一个用例报错,测试就会停止
  • -k: 根据测试用例的字符串模糊匹配用例执行
  • -maxfail={n}: 用例失败n次,测试停止
  • -reruns={n}: 用例失败重跑
#命令行方式:
pytest -vs ./testcase --reruns 2

#主函数方式:
pytest.main(["-vs", "./testcase", "--reruns=2"])

1.4 pytest.ini运行配置文件

  • 一般放在项目的根目录
  • 文件编码必须是ANSI编码
  • 主函数或者命令行方式运行,都会去读取这个配置文件,按配置文件的规则执行用例
    addopts: 运行时添加的参数如 -v -s
    testpaths: 运行测试用例的路径
    python_files: 匹配测试模块名的规则
    python_classes: 匹配测试类的规则
    python_functions: 匹配方法名的规则

配置文件:

[pytest]
addopts=-vs
testpaths=./testcase
python_files=test*
python_classes=Test*
python_functions=test*

1.5 给用例打上标签,指定运行标签关联的用例

使用装饰器给修饰在用例上,表示给此用例打上标签,如:
@pytest.mark.read
@pytest.mark.后的命名可自定义

代码:

    @pytest.mark.read
    def test_login2(self):
        print("\npytest测试用例执行。。。。。")

配置文件需要添加以下参数:

markers =
    read: 只读用例

执行用例:

pytest -m "read"

如果多个标签只需要加上or关键字连接即可,如:

pytest -m "read or write"

2.执行顺序

默认是按用例从上至下的方式执行

可用装饰器在用例上修饰:
@pytest.mark.run 装饰器参数order 表示用例的优先级
如果存在多个用例,只有部分用例使用装饰器,那么优先执行带有装饰器的用例,其他没有使用装饰器的用例按默认顺序执行;

    @pytest.mark.run(order=1)
    def test_login2(self):
        print("\npytest测试用例执行。。。。。")

标签:python,基础,用例,pytest,使用,test,测试用例,运行
来源: https://www.cnblogs.com/lantian022/p/16399050.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有