pytest基础知识一

  • pytest的介绍
    • pytest的作用
    • pytest的安装与版本查看
  • pytest的基本应用
    • 编写第一个简单的pytest应用
    • pytest文件和函数命令规则
    • pytest文件的三种运行方式
      • 命令行运行
      • PyCharm界面运行
      • pytest.main()运行pytesr文件
    • pytest常用的命令行运行参数
    • pytest的框架结构

pytest的介绍

pytest官网:http://www.pytest.org/

pytest是Python的一款单元测试框架,在学习自动化测试过程中,我们最开学习的都是线性脚本,但是当学到一定阶段以及业务复杂度和数据量上来后,我们必须需求一种全新的框架思维来管理和规范我们的测试脚本,从而实现高类聚低耦合的理念。

pytest的作用

  • 单测框架,比 unittest 测试框架更灵活
  • 入门难度低 第三方库丰富性
  • 通用性
  • 与 allure 生成的报告非常的美观
  • 定制性强

pytest的安装与版本查看

安装:       pip install -U  pytest
版本查看:    pytest --version

pytest的基本应用

编写第一个简单的pytest应用

# 被测试函数
def add(a, b):return a + b# 测试脚本
def test_add():assert 3 == add(1, 2)

运行结果:

platform win32 -- Python 3.8.7, pytest-6.2.5, py-1.10.0, pluggy-0.13.1
rootdir: E:\Home_Work\Home_Work2\pytest01
plugins: allure-pytest-2.9.43, Faker-8.10.1, cov-2.12.1, forked-1.3.0, html-2.1.1, metadata-1.11.0, rerunfailures-10.1, testconfig-0.2
.0, xdist-2.3.0
collected 1 item                                                                                                                     test\test_add.py .                                                                                                             [100%]========================================================= 1 passed in 0.94s =========================================================E:\Home_Work\Home_Work2\pytest01>

pytest文件和函数命令规则

pytest文件必须以 test开头或者 _ _ test.py 结尾,如 test__addadd_test.py结尾,否则在pytest解释器运行时,文件不能够被收集到。

pytest文件中测试类命名时,必须用Test开头
pytest文件中方法与函数命名必须要用 test__ 开头,函数没有用__test结尾的说法

def div(a, b):return a / bclass TestDiv:def test_div(self):assert 1 == div(1, 1)

pytest文件的三种运行方式

命令行运行

进入需要执行的Python文件目录下,打开命令行,输入pytest 文件名 如:pytest test_add.py

PyCharm界面运行

window:
第一步先设置默认运行的框架

第二步:点击倒三角,执行脚本

pytest.main()运行pytesr文件

1.删除之前运行过的IDE缓存

2.使用pytest.mian()运行pytest文件
要将默认框架切回unittest,用Python去运行才会生效

# 测试脚本
class TestAdd:def test_add(self):assert 3 == add(1, 2)def test_add2(self):assert 5 == add(1, 4)if __name__ == '__main__':pytest.main(["TestAdd::test_add2", "-vs"])

pytest常用的命令行运行参数

在实际生产中,测试用例都会在Jenkins或服务器上运行,那么这时候运行方式都是采用命令行去运行
例如在Jenkins运行接口测试用例

  1. pytest -k “add” 执行所有测试用例名中含有“add”的用例
  2. pytest - s 打印测试用例中print语句
  3. pytest -v 增加打印细节
  4. pytest - x 一旦发现失败用例,停止运行
  5. pytest -maxfail=2 当测试遇到两条失败,立刻停止运行
  6. pytest -m “标签名” 给测试用例加标签

pytest的框架结构

模块级: setup_module/teardown_module 模块始末,全局的(优先最高)
函数级: setup_function/teardown_function 只对函数用例生效(不在类中)
类级:   setup_class/teardown_class 只在类中前后运行一次(在类中)
方法级: setup_method/teardown_methond 开始于方法始末(在类中)
方法级: setup/teardown 运行在调用方法的前后
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
模块级(setup_module/teardown_module)模块始末,全局的(优先最高)
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_methond)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后
'''# 模块级别
def setup_module():print("资源准备:setup module")def teardown_module():print("资源准备:teardown module")def test_case1():print("case1")def setup_function():print("资源准备:setup function")def teardown_function():print("资源消毁:teardown function")class TestDemo:#  执行类 前后分别执行setup_class  teardown_classdef setup_class(self):print("TestDemo setup_class")def teardown_class(self):print("TestDemo teardown_class")# 每个类里面的方法前后分别执行 setup, teardowndef setup(self):print("TestDemo setup")def teardown(self):print("TestDemo teardown")def test_demo1(self):print("test demo1")def test_demo2(self):print("test demo2")class TestDemo1:#  执行类 前后分别执行setup_class  teardown_classdef setup_class(self):print("TestDemo setup_class")def teardown_class(self):print("TestDemo teardown_class")# 每个类里面的方法前后分别执行 setup, teardowndef setup(self):print("TestDemo setup")def teardown(self):print("TestDemo teardown")def test_demo1(self):print("test demo1")def test_demo2(self):print("test demo2")

pytest基础知识一相关推荐

  1. [源码解析] PyTorch 流水线并行实现 (1)--基础知识

    [源码解析] PyTorch 流水线并行实现 (1)–基础知识 文章目录 [源码解析] PyTorch 流水线并行实现 (1)--基础知识 0x00 摘要 0x01 历史 1.1 GPipe 1.2 ...

  2. python基础知识测试题_Python中的单元测试—基础知识

    python基础知识测试题 Unit testing is the number one skill which separates people who just finished their de ...

  3. 嵌入式Linux的OTA更新,基础知识和实现

    嵌入式Linux的OTA更新,基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一旦嵌入式Li ...

  4. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  5. 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...

    注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...

  6. 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...

    <计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...

  7. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  8. python常用变量名_python基础知识整理

    Python Python开发 Python语言 python基础知识整理 序言:本文简单介绍python基础知识的一些重要知识点,用于总结复习,每个知识点的具体用法会在后面的博客中一一补充程序: 一 ...

  9. 计算机基础知识掌握欠缺,《计算机基础知识》实验教学改革探讨.pdf

    <计算机基础知识>实验教学改革探讨.pdf Science& TechnologyVision 科 技 视 界 科技 探·索·争鸣 计<算机基础知识>实验教学改革探讨 ...

最新文章

  1. Awesome Projects (汇聚全球所有
  2. 无人驾驶油电混动牵引车_比纯电动更轻,省油率高达10%!解读首台国产非插电式混动卡车...
  3. Android Wifi开发之WifiConfiguration
  4. php 怎么将a 转成65,详细阐述PHP环境下如何将gbk编码转成utf8格式
  5. Android官方开发文档Training系列课程中文版:OpenGL绘图之响应触摸事件
  6. python邮件图片加密软件_用Python发一封图文并茂的邮件
  7. 打造专业人才发展链条:基于任职资格的专业人才发展与认证体系
  8. 黄刘生--数据结构--答案
  9. 神经网络不胜语__M-P模型似可寻
  10. office 2003 下载
  11. Linux实训项目——第八章:配置网络接口及远程管理
  12. npm 安装axios报错
  13. MOSEK Fusion Model
  14. 绕口令 - 专项练习
  15. 心田花开:解锁各类语文阅读理解答题技巧
  16. 使用telnet连接qq pop服务器拉取邮件
  17. 计算机常用英语(键盘符号),计算机常用英语..docx
  18. electron对接dll
  19. 网站url生成二维码
  20. vm-install vmware tools安装

热门文章

  1. 基于openssl的EVP对称加密C语言实战案例
  2. 我的小玩意之图片转帖工具 v1.2
  3. 计算机网络(自顶向下方法)-Internet概述
  4. GEOTRANS 3.7 用户使用手册 ------ 文件处理(坐标文件格式)
  5. 进程P1、P2、P3共享一个表格F,P1对F只读不写,P2对F只写不读,P3对F先读后写。进程可同时读F,但有进程写时,其他进程不能读和写。
  6. Qt 5.15 在线安装
  7. 转载:discuz代码解析(一、初始化应用的过程)
  8. css获取时间,改变CSS 样式,获取当前日期
  9. 5G NR 随机接入RACH流程(1)-- 概述
  10. 世界地图html效果,css3+html5世界地图区域划分高亮显示特效