pytest

  1. 什么是单元测试框架?
    单元测试是指在软件开发当中,针对软件的最小单元(函数、方法)进行正确性的检查测试。
  2. 单元测试框架主要做什么?
    测试发现:从多个文件里面去找到我们测试用例。
    测试执行:按照一定的顺序和规则去执行,并生成结果。
    测试判断:通过断言判断预期结果和实际结果的差异。
    测试报告:统计测试进度、耗时、通过率、生成测试报告。
  3. 单元测试框架和自动化测试框架有什么关系?
    单元测试框架只是自动化测试框架中的组成部分之一;
    POM设计模式只是自动化测试框架中的组成部分之一;
    数据驱动…
    关键字驱动…
    日志监控…
    断言…
    报告邮件…
  4. 自动化测试框架的作用
    a.提供测试效率,降低维护成本;
    b.减少人工干预,提高测试准确性、增加代码的重用性;
    c’核心思想是让不懂代码的人也能够通过这个框架实现自动化测试。
  5. pytest测试用例的运行方式
    主函数模式运行:
    运行所有:pytest.main()
    指定运行:pytest.main([‘’,‘test_login.py’])
    指定目录:
    指定
    命令行:
    c、通过读取pytest.ini配置文件运行
    pytest.ini这个文件它是pytest单元测试框架的核心配置文件
    (1)位置:一般放在项目的根目录下
    (2)编码:必须是ANSI
    (3)作用:改变pytest默认的行为
    (4)运行规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件。
    pytest.ini文件内的主要内容如下:
#执行命令的参数,多个命令之间用空格分隔
addopts= -vs -x
#测试用例默认执行路径
testpaths=./TestCase
#模块名的规则,即项目名称
python_files=test_*.py
#类名规则
python_classes=Test*
#方法名的规则,即用例开头名称
python_functions=test
#冒烟测试标记:
markers=smoke:冒烟用例shopping:购物车模块
  1. pytest的执行顺序:
    unittest默认的执行顺序是:ascll的大小的顺序执行
    pytest默认的执行顺序是从上到下的顺序执行。
    改变pytest的执行顺序:可以在执行用例函数前加@pytest.mark.run(order=次数)
  2. 如何分组执行(冒烟)
    在需要分组的测试用例前加@pytest.mark.标记名称,运行时命令参数-m “标记名称”:pytest -vs -m “标记名称”
  3. pytest跳过测试用例
    在需要跳过的测试用例前加@pytest.mark.skip,
    无条件跳过:@pytest.mark.skip(reason=“写注名跳过的原因”)
    有条件跳过:@pytest.mark.skipif(条件表达式,reason=“写注名跳过的原因”)
  4. pytest前后置处理方法
    第一种方式:使用setup/teardown、setup_class/teardown_class、setup_module/teardown_module来实现所有用例的前后置。
    setup/teardown:在每个用例的前后都会执行一次
    setup_class/teardown_class:在每个类的前后都会执行一次
    setup_module/teardown_module

第二种方式:使用@pytest.fixture(scope=“”,params=“”,autouse=“”,ids=“”,name=“”)装饰器来实现部分用例的前后置。
使用:在方法前使用@pytest.fixture()标记,再在需要前置的测试用例中传入标记的方法名称。
参数代表意义:
scope表示的是被@pytest.fixture()标记的方法的作用域,function(默认)、class、module、package/session
params:参数化(支持列表、元组、字典列表和字典元组四种格式),使用时方法中必须使用request接收该值

@pytest.fixture(scope="session",params=["one","two","first"])
def my_fixture(request):print("前置")yield request.paramprint("后置")

autouse=True:自动执行,默认False
ids:当使用params参数化时,给每一个值设置一个变量名
name:给表示的是被@pytest.fixture()标记的方法取一个别名

  1. 通过conftest.py和@pytest.fixture()结合使用全局 的前置应用(比如项目的全局登录,公用模块的全局处理)
    注意事项:
    a.conftest.py文件是单独存放的一个配置文件,名称不能更改。
    b.使用:可以在不同的py文件中使用同一个fixture函数
    c.原则上conftest.py需要和运行的用例放在同一层,并且使用不需要做任何import导入操作

  2. pytest自动化测试框架params参数实现参数化

  3. pytest集成allure生成企业级测试报告
    pytest-html插件生成报告:
    allure-pytest插件生成报告:
    1)下载解压,并把bin的路径配置到path路径(官网下载地址:https://github.com/allure-framework/allure2/releases)
    验证是否安装成功:输入命令allure --version
    2)生成报告
    生成临时文件:

#执行命令的参数,多个命令之间用空格分隔
addopts= -vs --alluredir  ./temp
#测试用例默认执行路径
testpaths=./TestCase
#模块名的规则,即项目名称
python_files=test_*.py
#类名规则
python_classes=Test*
#方法名的规则,即用例开头名称
python_functions=test

一次性生成allure测试报告

#-*-coding:gbk-*-
import pytest
import os
if __name__ == '__main__':#执行测试用例获取测试数据和数据目录pytest.main(['-s','test_pytest.py','--alluredir','../allure-temp','--clean-alluredir'])# 生成html测试报告 找到测试数据 生成测试报告目录,-c在生成报告之前先清理之前的报告目录 -o输出 --clean清空原来的测试报告os.system('allure generate ../allure-temp -c -o ../report --clean')#在一个临时文件中生成报告并启动浏览器打开,但是在关闭浏览器之后这个报告就再也打不开,不建议使用#os.popen('allure serve ../allure-temp')#自动使用浏览器打开测试报告report目录下的文件os.popen('allure open ../report')
  1. pytest数据驱动装饰器@pytest.marks.parametrize详解以及YAML数据驱动
    @pytest.mark.parametrize(args_name,args_value)
    args_name:参数名称
    args_value:参数值(使用list列表,tuple元组,字典列表,字典元组等),在数据中有多少个值那么用例就执行多少次。
import pytest
class TestAPI:#基础用法,执行三次,打印出girl  boy  bady@pytest.mark.parametrize(args,["girl","boy","bady"])def test_api(self,args):print(args)#解包,执行三次,打印出 小于,15  小化,12  小李,25@pytest.mark.parametrize('name,age',[['小于',15],['小化',12],['小李',25]])def test_api(self,name,age):print(name,age)

YAML详解:
主要作用:
1.用于做配置文件
2. 用于做测试用例
数据组成:
1.map对象:例如:键值对(键(空格)值) name: 小于
2.列表,用“-”开头的

#pytest.mark.parametrize集合YAML一块使用
@pytest.mark.parametrize('ceseinfo',ReadFile("../Data/appDesiredCaps.yaml").ReadYaml())
def test_01(self,ceseinfo):print(ceseinfo)
  1. requests模块
    requests第三方库,主要用于发送http请求,做接口自动化。
    安装命令:pip install requests
    requests全局观,知道有哪些方法,每个方法的用处:
#requests库常用的请求方法如下
requests.get() #发送get请求
requests.post()#发送post请求
requests.delete()#发送delete请求
requests.put()#发送put请求
requests.request()#最核心的方法
#响应方法如下:response对象
rep=requests.request()
#返回字符串的数据
print(rep.text)
#返回字节格式的数据(非文本请求,比如图片)
print(rep.content)
#返回字典格式的数据
print(rep.json())
#返回状态码
print(rep.status_code)
#返回状态信息
print(rep.reason)
#返回cookie信息
print(rep.cookies)
#返回编码格式
print(rep.encoding)
#返回响应头信息
print(rep.headers)

pytest单元测试框架基本操作相关推荐

  1. python制作考试系统_Python系统学习 - Pytest单元测试框架

    哈咯,大家,我们今天来学习pytest单元测试框架,这个框架要比unittest更加易于使用,结构性也更加好,希望大家能够从中学习到有用的东西,然后在下一章,我们来使用pytest单元测试框架来搭建一 ...

  2. pytest单元测试框架

    参考:https://www.bilibili.com/video/BV14i4y1c7Jo?from=search&seid=5485646383256203318 1.单元测试框架 2.单 ...

  3. pytest单元测试框架简介

    一.什么是单元测试框架 单元测试框架是指:在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试. 二.单元测试框架的分类 Java: Juint.TestNG Python: unni ...

  4. python单元测试断言_Python单元测试框架之pytest -- 断言-阿里云开发者社区

    对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就 ...

  5. pytest测试框架(一):初识pytest

    一.pytest的简介 pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,容易上手. pytest可以和selenium.request,appium结合实现web自动 ...

  6. 一、Pytest自动化测试框架 — Pytest和unittest测试框架原理

    目录 前言 ###文章内容有配套的学习视频和笔记都放在了文章末尾### 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5 ...

  7. pytest测试框架_聊聊 Python 的单元测试框架(三):最火的 pytest

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 一.介绍 本篇文章是<聊聊 Python 的单元测试框架>的第三篇,前两篇分别介绍了标准库 unittes ...

  8. Python单元测试框架之pytest 3 -- fixtures

    From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...

  9. Python热门单元测试框架对比:pytest和unittest还傻傻分不清楚?

    前言 对于我们测试来说,做自动化测试需要编写测试用例,编写测试用例就会使用到单元测试模块,常见的python单元测试模块有unittest,pytest,nose等,但是听说过最多的也就属于pytes ...

最新文章

  1. CactiEz 无法登陆 、重启不画图处理
  2. 程序化广告(1):程序化广告概述
  3. 设计模式中遵循的原则:单一职责、开发-封闭、依赖倒转
  4. 安卓项目打开有时候manifests不见了_【必看】暴力0鲁项目详细操作及玩法如何跳过广告,不分享群等...
  5. Python中列表的介绍以及常见操作
  6. python列表、元组、字典和集合的算法时间_27.Python列表(list)、元组(tuple)、字典(dict)和集合(set)详解...
  7. Bootstrap之栅格系统
  8. 绿色版本Tomcat
  9. 完成计算机组装工艺卡组装准备,计算机组装与维护(刘猛)教程方案.doc
  10. 知识图谱够火,但底层技术环节还差点火候 | AI 技术生态论
  11. Python 杠上 Java、C/C++,赢面有几成?
  12. java 连接oracle_「事件驱动架构」使用GoldenGate创建从Oracle到Kafka的CDC事件流
  13. 【VRP】基于matlab遗传算法求解出租车网约车接送客车辆路径规划问题【含Matlab源码 YC003期】
  14. 计算机音乐专业考研,武汉音乐学院2021年硕士研究生招生考试《计算机音乐作曲》考试大纲...
  15. 计算机软考设计师中级真题
  16. Win7秘籍 如何用压缩卷调整不合理分区
  17. 【数量称谓】祖宗十八代
  18. 输入【ionic start myApp tabs】命令创建项目时失败
  19. 取代房子,这是未来5年最好的投资!
  20. SpringSecurity详细介绍RememberMe源码流程

热门文章

  1. Eclipse中解决.svg文件报错的问题
  2. 2019年出版新书目录_上海译文公布2019年“新书目录” 名家名译作品结集出版...
  3. 关于下载环境的一些哔哔
  4. 个人建议:真的不要去小公司...
  5. mql4自动化交易,购买+全部平仓
  6. 利用计算机窃听,以色列研究人员实现利用计算机风扇噪音窃听
  7. 使用python的turtle库一笔画出联通logo
  8. 使用MDT部署Windows Server 2003 R2
  9. 如何用PS在图片上添加箭头
  10. C语言 if语句 大括号和不加大括号的区别