pytest简介

pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。

使用介绍

编写规则

  • 测试函数以test_开头
  • 测试类以Test开头,并且不能带有 init 方法
  • 测试文件以test_开头(以_test结尾也可以)
  • 断言使用基本的assert即可

pycharm 配置pytest

更改工程设置默认的运行器:

file->Setting->Tools->Python Integrated Tools->项目名称->Testing->Default test runner->选择pytest

fixture的Scope参数

scope参数有四种,分别是'session'、'module'、'class'、'function',默认为function。

一个.py文件为一个module,一个session中可以有多个module,若是多个.py文件共用一个功能时,可以使用session参数。

  • session:每个session只运行一次
  • module:每个module的所有test只运行一次
  • class:每个class的所有test只运行一次
  • function:每个test都运行,Scope的默认值
#写于conftest.py中
@pytest.fixture(scope="session")
def first():
print("scope为session级别多个.py模块只运行一次")
a = "ad"
return a
def test_s(first):
assert first == "ad" @pytest.fixture(scope="module")
def first():
print("scope为module级别当前.py模块只运行一次")
a = "amdin"
return a
def test_m(first):
assert first == "ad" @pytest.fixture(scope="class")
def first():
print("scope为class级别只运行一次")
a = "admin"
return a
def test_c(self,first):
assert first == "admin" @pytest.fixture(scope="function")
def first():
b = "123456"
return b
def test_f(first):
assert first == "654321"

setup和teardown

setup:在测试函数或测试类之前执行,完成准备工作,例如数据库链接、测试数据等

teardown:在测试函数或测试类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等

备注:也可以在fixture函数中通过yield实现setup和teardown功能

  • 模块级(setup_module/teardown_module)开始于模块始末,全局,优先级最高
  • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中定义)
  • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中定义)
  • 方法级(setup_method/teardown_method)开始于方法始末(在类中定义)
def setup_module():
print("setup_module:整个.py模块执行前执行一次")
print("比如:所有用例开始前只打开一次浏览器")
def teardown_module():
print("teardown_module:整个.py模块执行后执行一次")
print("比如:所有用例结束只最后关闭浏览器") def setup_class(self):
print("setup_class:类中的所有用例执行前执行一次")
def teardown_class(self):
print("teardown_class:类中的所有用例结束后执行一次") def setup_function():
print("setup_function:不在类中的每个用例开始前执行")
def teardown_function():
print("teardown_function:不在类中的每个用例结束后执行") def setup_method(self):
print("setup_method: 类中的每个用例开始前执行")
def teardown_method(self):
print("teardown_method: 类中的每个用例结束后执行")

assert断言

A=11
a='hello'
b= 'he'
大小断言:assert A == != <= >= 22
包含断言:assert b in a; assert b not in a
是否 :assert a is True; assert a is not true; assert a is false

confest.py文件

pytest的本地测试配置文件,可以实现数据共享,也可以用于导入外部插件。作用于所在的目录及子目录。

注意:

  1. confest.py与运行的用例要在同一个package(可以理解为同一个文件夹)下,并且有init.py文件,用于被pytest自动识别。
  2. 名字固定

可以用来存放 fixture文件,供多个.py文件使用

Console参数

Pytest学习的更多相关文章

  1. [转载]pytest学习笔记

    pytest学习笔记(三)   接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...

  2. Pytest学习(三) - setup和teardown的使用

    一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...

  3. pytest学习笔记

    From: https://blog.csdn.net/gaowg11/article/details/54910974 由于对测试框架了解比较少,所以最近看了下pytest测试框架,对学习心得做个记 ...

  4. pytest 学习笔记一 入门篇

    前言 之前做自动化测试的时候,用的测试框架为Python自带的unittest框架,随着工作的深入,发现了另外一个框架就是pytest (官方地址文档http://www.pytest.org/en/ ...

  5. pytest学习笔记(一)

    这两天在学习pytest,之前有小用到pytest,觉得这个测试框架很灵巧,用在实现接口自动化(pytest+requests)非常的轻便,然后很有兴致的决定学习下,然后又发现了pytest-sele ...

  6. Pytest学习(一)- 入门及基础

    前言 十一也赶上自己刚出院,本想在十一放假前用假期刷完Pytest的,结果被希洛克神话吸引,再次回归毒奶粉,一直奋斗到距离上班还有两天,引导石刷没了,就没了智慧. 当然也没出过神话,结果一怒之下卸载, ...

  7. Pytest学习(二) - 断言的使用

    一.前言 学习pytest总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的. 二.断言对比 unittest 断言 assertEqual(a, b) # ...

  8. Pytest学习笔记3-fixture

    前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用 ...

  9. pytest学习笔记(三)

    接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...

  10. pytest学习笔记(二)

    继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步 ...

随机推荐

  1. 算法模板:C++的高精度

    代码是抄别人的:https://blog.csdn.net/code4101/article/details/38705155. 这篇博客只是用来查看保存,非原创. #include<iostr ...

  2. sql报错收集

    踩坑记录: 当出现如下错误 Not enough parameters for the SQL statement 多半是因为插入时填写的字段名有误 json.decoder.JSONDecodeEr ...

  3. immutable 与 stable 函数的差异

    Stable 函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果.这种稳定级别允许优化器将多次函数调用转换为一次.在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次 ...

  4. etcd v3版本生产级集群搭建以及实现一键启动脚本

    本专栏的上一篇文章写了<长篇图解etcd核心应用场景及编码实战>,本文继续.后续计划章节内容如下: <长篇图解etcd核心应用场景及编码实战> <搭建高可用etcd集群& ...

  5. 快速排序C语言版图文详解

    ​ 算法原理:选一个数位基准,将序列分成两个部分,一边全是比它小序列,另一边全是比它大序列.然后再分别对比他小的序列和比再次进行基准分割.依次分割下去,得到一个有序的队列. 原理图示: ​编辑 ​编辑 ...

  6. Bert不完全手册8. 预训练不要停!Continue Pretraining

    paper: Don't stop Pretraining: Adapt Language Models to Domains and Tasks GitHub: https://github.com ...

  7. kali安装vscode(deb包)

    如果在虚拟机下安装,则你可以在主机下载,然后复制到具有可读可写的文件夹,比如root用户的话就在/root下面 打开终端,切换到软件终端,输入安装命令dpkg -i code...按table键自动补 ...

  8. MyBatis创建第二个项目

    MyBatis创建第二个项目 Mysql文件配置 /* Navicat Premium Data Transfer​ Source Server         : Mybatis Source Se ...

  9. 【nginx】使用 nginx 时,使用 sub_filter 注入 js 代码,例如 google analysis 等

    目录 1. 创建 GA 1 2. 注入代码2 结果 网站 F12 GA 控制台 Reference 在一项工作中,已经将内网的一个网站通过 二级域名 + nginx + frp 的方式映射到公网.网站 ...

  10. springboot的注解声明过滤器配置错误导致拦截所有请求。

    究其原因, 原来spring 扫包时候 扫了Webfilter 注解,注册了一次过滤匹配路径,扫了Component注解(又注册了一次过滤匹配路径,默认是全路径). Component注解后于WebF ...