前言

大家都知道Python有自带的单元测试框架unittest,那为什么还要学习Pytest呢?先了解下Pytest优点


pytest:

pytest是一个非常成熟的全功能的Python测试框架,是unittest框架的扩展,主要特点有以下几点:

1、简单灵活,非常方便的组织自动化测试用例;

2、支持参数化,可以细粒度地控制要测试的测试用例;

3、能够支持简单的单元测试和复杂的功能测试,比如web端selenium/移动端appnium等自动化测试、request接口自动化测试

4、pytest具有很多第三方插件,并且可以自定义扩展,比如测试报告生成,失败重运行机制

5、测试用例的skip和fail处理;

6、结合业界最美的测试报告allure+Jenkins,持续集成

selenium:

基于JavaScript代码库的自动化测试框架,通过脚本语言,模拟用户行为操作,最接近用户真实场景,实现对web自动测试。

Selenium,是目前的最火爆企业最主流的webUI自动化框架


环境搭建

pip install -U pytest

pytest-xdist #多线程

pip install -U pytest-rerunfailures   #重试运行cases

pip install  pytest-html #生成测试报告

pytest --version # 会展示当前已安装版本


编写规则

编写pytest测试样例非常简单,只需要按照下面的规则:

测试文件以test_开头(以_test结尾也可以)

测试类以Test开头,并且不能带有 init 方法

测试函数以test_开头

断言使用基本的assert即可


selenium+pytest案例实操

import pytest # 引入pytest包

def test_a(): # test开头的测试函数

print("------->test_a")

assert 1 # 断言成功

def test_b():

print("------->test_b")

assert 0 # 断言失败

if __name__ == '__main__':

pytest.main(['-s', 'class01.py'])

可以包含一个或多个Test开头的测试类,test_开头的函数

1.测试类主函数模式

pytest.main(['-s', 'test.py'])

2.命令行模式运行

pytest 文件路径/测试文件名


3. 扩展插件

3.1. 测试报告: pytest-html

pytest.main(['-s','test.py','--html=./report/result.html'])

表示当前路径下生成report文件夹,result.html文件

批量运行用例:pytest-xdist

pytest.main(['-s','test.py','--html=./report/result.html','-n=2'])

-n=2 表示2个线程并发运行所有的测试用例

allure测试报告:allure-pytest

运行用例:pytest.main(['-s', '-q', '--alluredir', './report/xml'])

pytest 测试目标文件 --alluredir 数据目录

运行后的结果,是生成xml的数据集合

生成报告:allure generate --clean ./report/xml/ -o ./results/html/

第一个是数据集目录,第二个是生成报告目录

-o是指向目标生成测试报告的目录;


conftest配置

当自动化用例越来越庞大的时候,很多用例的数据可以共享,复用,让用例脚本可读性,维护性更高,比如登录等

conftest.py 配置里可以实现数据共享,比如py跨文件共享前置

conftest.py配置脚本名称是固定的,不能改名称

不需要import导入 conftest.py,pytest用例会自动查找

自从使用了pytest框架,爱了爱了,深深的感受到它的可扩展性和灵活性,老板再也不用担心我的自动化效率低


如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到893694563,群内会有不定期的分享测试资料。

如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

自从学会了Python自动化Pytest框架,领导再也不敢在我背后指手划脚了的更多相关文章

  1. requests接口自动化-pytest框架

    pytest框架规则 测试文件以test_开头或者以_test结尾 测试类以Test开头,并且不能带有init方法 测试函数以test_开头 断言使用assert pytest框架运行用例 运行单个文 ...

  2. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  3. python之pytest框架实现

    一.pytest测试框架简介: pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: 简单灵活,容易上手 支持参数化 能够支持简单的单元测试和复杂的功能测试,还可以用来做se ...

  4. python自动化测试pytest框架

    pytest和unittest都是python中的测试框架,pytest相比unittest 更加的灵活,具体体现在 以下几点 1.写测试方法时不用继承类 2.前置后置放在一起 2.1如果是全局共享的 ...

  5. 学会这个,助你升值加薪自动化框架之python+selenium+pytest

    1.概述 selenium: 基于JavaScript代码库的自动化测试框架,通过脚本语言,模拟用户行为操作,最接近用户真实场景,实现对web自动测试. Selenium,是目前的最火爆企业最主流的w ...

  6. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  7. pytest 框架自动化Selenium 之yield 使用

    环境 python 3.7 由于3.0-3.5以下部分pytest可能有部分兼容问题安装建议2.7-2.9,3.5-最新 pip install pytest专属 pytest框架包 pip inst ...

  8. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  9. pytest框架执行自动化测试时使用pycharm正常运行,使用cmd或Terminal报错:Hint: make sure your test modules/packages have valid Python names.

    问题描述: 使用pytest框架做接口自动化测试时,在测试用例所在的.py文件下使用pycharm的run功能可以正常跑用例,使用cmd运行窗口或Terminal则报下图中的错误: Hint: mak ...

随机推荐

  1. 【springboot】知识点总结

    [springboot 基础编] 01.SpringBoot>01 - 第一个应用–HelloWorld 02.SpringBoot>02 - 整合 MyBatis 03.SpringBo ...

  2. 【设计模式】java设计模式目录

    1.创建型模式 JDK1.5枚举Singleton    单例模式 AbstractFactory  工厂方法模式    简单工厂模式 Builder Prototype 2.结构型 java设计模式 ...

  3. ubuntu下配置JDK的一些坑点

    ubuntu下配置JDK的一些坑点 在centos下的JDK配置: 在ubuntu下的话,要修改两个地方: 在/etc/enviornment中配置! 在/etc/profile中配置! 写在最后: ...

  4. 客户机与服务器TCP连接状态

    客户机:

  5. 整型:int

    整型:int 整型变量的定义和输出 注意://short<=int<=long<=longlong   代码示例一:   #include<stdio.h> int ma ...

  6. vue element-ui .el-dialog 限制高度

    <style scoped> /deep/ .el-dialog {   height: 78vh;   overflow: auto; }   </style>

  7. 通俗易懂讲解Word2vec的本质

    本文首发于微信公众号「对白的算法屋」,来一起学AI叭 一.Word2vec CBOW(Continuous Bag-of-Words):每个词的含义都由相邻词决定. Skip-gram:依据分布的相似 ...

  8. 窗口函数至排序——SQLServer2012可高用

    常用到的窗口函数 工作中要常对数据进行分析,分析前要对原始数据中找到想要的格式,数据原本存储的格式不一定时我们想要的,要在基础上进行一定的处理,下面介绍的几种方式是常用的数据排序的集中方式,包含 排名 ...

  9. MySQL——MySQL初始化配置文件

    初始化配置文件(影响服务器和客户端程序) 1.MySQL初始化配置加载顺序: 命令行 ----> 初始化配置文件 ----> 预编译选项 2.MySQL初始化配置文件加载顺序: (1)/e ...

  10. Servlet生命周期和方法

    一.五个生命周期方法,有三个很重要,初始化方法.提供服务方法和销毁方法 1.三个主要方法 2.另外两个重写的成员方法只做了解 二.生命周期详解 其中,每次刷新页面都是一次对servlet访问: 页面访 ...