• 一篇打通,pytest自动化测试框架详细,从0到1精通实战(一)


    前言

    pytest单元测试框架

    1、什么是单元测试框架
    单元测试是指在软件开发当中针对软件的最小单位(函数、方法)进行正确性的检查测试

    2、单元测试框架有哪些?
    Java:junit 和 testing
    python:unittest 和 pytest

    3、单元测试框架主要做什么?
    测试发现:从多个文件里面去找到我们的测试用例
    测试执行:按照一定的顺序和规则去执行,并生成结果
    测试判断:通过断言判断预期结果和实际结果的差异
    测试报告:统计测试进度、耗时、通过率、生成测试报告

    单元测试框架和自动化测试框架有什么关系

    1、什么是自动化测试框架?
    把在自动化测试过程中用到的一些功能或者工具,分装成各个模块,包括如何进行自动化脚本编写以及分层功能的基础模块,进行持续集成、定时任务的管理模块,发送测试报告、进行测试结果统计分析的统计模块等,将这些模块组成一套可重用的骨架

    2、作用
    提高测试效率,降低维护成本;
    减少人工干预,提高测试的准确性,增加代码的重用性;
    核心思想是:让不懂代码的人也能够通过这个框架去实现自动化测试;

    3、pytest单元测试框架和自动化测试框架的关系
    单元测试框架:只是自动化测试框架中的组成部分之一
    pom设计模式:只是自动化测试框架中的组成部分之一
    数据驱动、关键字驱动、全局配置文件的封装、日志监控、selenium,requests二次封装、断言、报告邮件等等

    pytest简介

    pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手;
    pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、app自动化;
    pytest可以实现测试用例的跳过以及reruns失败用例重试;
    pytest可以和allure生成非常美观的测试报告;
    pytest可以和Jenkins持续集成;
    pytest有很多非常强大的插件,并且这些插件能够实现很多的使用的操作;

    1. # 如
    2. pytest
    3. pytest-html # (生成html格式的自动化测试报告)
    4. pytest-xdist # (测试用例分布式执行,多CPU分发)
    5. pytest-ordering # (用于改变测试用例的执行顺序)
    6. pytest-rerunfailures # (用例失败后重跑)
    7. allure-pytest # (用于生成美观的测试报告)

    安装pytest

    安装pytest:

    pip install pytest 

    pytest的命名规则

    模块名必须以test_开头或者以test_结尾;
    测试类名必须以Test开头,并且不能有init方法;
    测试方法必须以test开头;

     

    pytest测试用例的运行方式和执行顺序

    1、运行方式

    主函数模式
    运行所有:pytest.main()
    指定模块:pytest.main([“test_01.py”])
    指定目录:pytest.main([“./test_py”])

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

     

    1. pytest.main(["test_01.py::Test01Class"]) # 指定到类名
    2. pytest.main(["test_01.py::Test01Class::test003"]) # 指定到方法名
    2、命令行模式

    运行所有:pytest
    指定模块:pytest test_01.py
    指定目录:pytest ./test_py

    通过nodeid指定用例运行: pytest test_01.py::Test01Class::test0033.通过读取pytest.ini配置文件来运行pytest.ini这个文件他是pytest单元测试框架的核心配置文件

    位置:一般放在项目的根目录
    编码:必须是ANSI,可以使用notepad++修改编码格式
    作用:改变pytest默认的行为
    运行规则:不管是主函数的模式运行,还是命令行模式运行,都会去读取这个配置文件

    3、执行顺序
    unittest:根据Ascll的大小来绝对的执行的顺序
    pytest:默认从上到下
    改变默认执行顺序:使用mark标记

    @pytest.mark.run(order=3)

    Pytest生成自带的html测试报告

    安装pytest-html:

    pip install pytest-html

    1、直接执行pytest.main() 【自动查找当前目录下,以test开头的文件或者以test结尾的py文件】

    pytest.main([‘--html=./report.html’]) 

     

    D3

    2、pytest.main(“模块.py”)【运行指定模块下,运行所有test开头的类和测试用例】

    pytest.main(["--html=./report.html","模块.py"])
    

    D4

     

    3、运行指定模块指定类指定用例,冒号分割,并生成测试报告

    pytest.main([‘--html=./report.html’,‘模块.py::::test_a_001'])

    D5

    4、Pytest调用语句

    pytst.main(['-x','--html=./report.html','t12est000.py'])
    

     

    -x:出现一条测试用例失败就退出测试
    -s:显示print内容
    -v:显示更详细的信息
    -vs:这两个参数一起使用
    -n:支持多线程或者分布式运行测试用例
    -reruns NUM:失败用例重跑
    -x:只要有一个用例报错,那么测试停止
    –maxfail=2:出现两个用例失败就停止
    -k:根据测试用例的部分字符串指定测试用例

    5、使用@pytest.mark.skip()跳过该用例(函数)

    1. class Test01Class():
    2. @pytest.mark.skip # 跳过test001
    3. def test001(self):
    4. assert 5 == 4 # 断言

    6、pytest运行结果字符意义
    .:点号,表示用例通过
    F:表示失败 Failure
    E:表示用例中存在异常 Error
    S:表示跳过 skipped 

    感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

     这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

  • 相关阅读:
    无代码开发添加数据入门教程
    Project Office X for Mac项目管理工具
    基于matlab创作简易表白代码
    【计算机硬件组成】基础知识(必备)
    基于PHP+MySQL的超市信息管理系统
    【面向对象依赖关系概念总结】面向对象程序设计的五种依赖关系
    norflash 中块和扇区的关系
    java 字符串替换
    android嵌入式开发及实训答案,android面试简历模板
    Android Glide 3.8 常见方法总结 【圆角、下载、回调】
  • 原文地址:https://blog.csdn.net/okcross0/article/details/132902519