python的实现和测试是啥意思_Python接口自动化测试之pytest与unittest区别
引言
我们在使用python做接口测试的时候,搭建的接口测试框架都是python的单元测试框架,而python的单元测试框架很多unittest、pytest、nose等
什么是单元测试
我们知道软件测试按开发阶段划分:单元测试,集成测试,系统测试,验收测试,用户测试等。这里说的单元测试,就是第一阶段,一般都是开发去做,在国内绝大部分公司都是开发去做单元测试。单元测试就是测试的对象是程序中的最小单元。程序的最小单元可以是一个函数,一个类,也可以是函数的组合,类的组合。
什么是框架
框架——软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
——百度百科
简单来说,框架是提供一些基本的功能与约束条件,让你去实现业务功能。举个生活栗子,给你个厨房,你可以用来做饭,烧烤和用作杂物间等,但是你不可能放张床,用来睡觉(豪宅别墅除外)。厨房提供的是厨房的框架,你必须遵从框架内的约束,去做你想做的事。超过框架之外的功能是无法实现。
什么是自动化测试框架
自动化测试框架,简单来说就是应用自动化测试的框架。这句话好像是废话。其实,就是为了解决某些特定问题和测试需求,而开发解决问题的组件。
自动化测试框架的定义为:由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合————百度百科。
如果还不理解,再继续上面那个生活栗子,给你一个厨房,厨房是用来做饭的,这是框架的约束,但是一个空厨房没有东西,就是一个空架子,得买厨具、食物蔬菜大米等,才能做饭。这些硬性的东西就是需要开发的组件。解决的问题就是吃饭问题。大家请自行脑补。
Python三大主流框架
第一种:unittest
unittest是Python标准库中自带的单元测试框架。unittest有时候也被称为PyUnit。就像JUnit是Java语言的标准单元测试框架一样,unittest(PyUnit)则是Python语言的标准单元测试框架。
unittest支持自动化测试,测试用例的初始化和关闭,测试用例的聚合等功能。unittest有一个很重要的特性:它通过类(class)的方式,将测试用例组织在一起。
unittest不需要单独去下载安装,python内置单元测试框架直接使用。
具体看例子:
# -*- coding: utf-8 -*-
'''
@author: Leo
@software: pycharm
@file: test.py
@time: 2020/5/6 0006 23:25
@Desc:
'''
__author__ = 'Leo'
import unittest
class Testunittest(unittest.TestCase):
def test_001(self):
self.assertEqual('abc'.upper(),'ABC')
if __name__ == '__main__':
unittest.main()
运行结果:
第二种:nose
nose是Python的一个第三方单元测试框架。这意味着,如果要使用nose,需要先显式安装它:
>pip install nose
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: nose in d:\python3\lib\site-packages (1.3.7)
简单的例子:
import nose
def test_001():
assert 'abc'.upper() == 'ABC'
pass
if __name__ == '__main__':
nose.runmodule()
运行结果:
温馨提示:
nose已经进入维护模式,从github 上可以看到,nose最近的一次代码提交还是在2016年5月4日。继承nose的是nose2,但要注意的是,nose2并不支持nose的全部功能,
nose2的主要目的是扩展Python的标准单元测试库unittest,因此它的定位是“带插件的unittest”。nose2提供的插件,例如测试用例加载器,覆盖度报告生成器,并行测试等内置插件和第三方插件,让单元测试变得更加完善。
第三种:pytest
pytest是Python另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。
pytest的特性有:
1)支持用简单的assert语句实现丰富的断言,无需复杂的self.assert*函数
2)自动识别测试模块和测试函数
3)兼容unittest和nose测试集
4)支持Python3和PyPy3
5)丰富的插件生态,已有300多个各式各样的插件,和活跃的社区
简单例子:
import pytest
def test_001():
assert 'abc'.upper() == 'ABC'
if __name__ == '__main__':
pytest.main()
运行结果:
再看一个例子:
import pytest
def add_test(x):
return x + 1
def test_001():
assert add_test(3) == 2
if __name__ == '__main__':
pytest.main('-s','test.py')
运行结果:
备注:
1、如果是在命令行模式运行的话,-s会显示打印的内容,不加的话,就不会显示。
2、如果是使用pycharm运行的话,加不加-s都可以。
3、不需要main函数,pytest自动识别test_开头的测试方法(用例)。
4、pytest兼容unittest框架的代码,可以用来运行unittest测试用例。
如图:
点赞关注不迷路哦!!!!
python的实现和测试是啥意思_Python接口自动化测试之pytest与unittest区别相关推荐
- jemeter python接口自动化测试平台_python接口自动化测试之request
之前小编写过Rest-assuert接口测试框架,它是基于java的,那么怎么轻轻松松玩转python接口自动化测试呢?今天小编就写写如何使用python Request进行接口自动测试. 学习任何一 ...
- python判断值是否在excel中_python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功...
1.首先在excel中填写好预期结果的值 这里判断接口成功的依据是预期结果值是否存在于接口的返回数据中. 一般接口的返回值都是json对象,我们需要将json对象转换为json格式的字符串 如下图,进 ...
- python 接口自动化测试_python接口自动化测试之接口数据依赖
作者:泰斯特test 链接:https://juejin.im/post/5cc11f6be51d45401f566d14 在做自动化测试时,经常会对一整套业务流程进行一组接口上的测试,这时候接口之间 ...
- python接口自动化 一个变量 其他接口要用_python接口自动化测试之接口数据依赖的实现方法...
在做自动化测试时,经常会对一整套业务流程进行一组接口上的测试,这时候接口之间经常会有数据依赖,那么具体要怎么实现这个依赖呢. 思路如下: 抽取之前接口的返回值存储到全局变量字典中. 初始化接口请求时, ...
- python自动化测试判断方法_python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功...
1.首先在excel中填写好预期结果的值 这里判断接口成功的依据是预期结果值是否存在于接口的返回数据中. 一般接口的返回值都是json对象,我们需要将json对象转换为json格式的字符串 如下图,进 ...
- python读取每一行文字二十四_python接口自动化(二十四)--unittest断言——中(详解)...
简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言.这里以获取城市天气预报的接口为例,设计了 2 个用例,一个是查询北京 ...
- python调用文件下载接口_python接口自动化21-下载excel文件(Content-Type:octets/stream)...
前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...
- python接口测试框架与自动化实战_Python接口自动化从设计到开发,测试框架实战与自动化进阶视频课程...
Python接口自动化从设计到开发,测试框架实战与自动化进阶视频课程21套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白 ...
- python测试自动化封装_python接口自动化学习笔记(封装获取测试数据方法)
本篇文章是接于python接口自动化学习笔记(封装方法用于读取excel) 后的拓展,讲解在封装完成excel的数据读取代码后,如何在data层进行使用 首先,我准备了这样一个excel表格用以存储测 ...
最新文章
- android 根据时间获取时间对应的星期
- 多 LDAP 目录服务器的 FileNet P8 系统介绍和配置实例
- 数据结构 —— 为结构体内变量赋值
- DDoS高防(国际)子产品发布,替代原本在DDoS高防IP中的海外线路。
- 锐捷RG-S2126G交换机密码恢复实战
- 微信小程序scroll-view去掉滚动条
- [debug] “ImportError DLL load failed 找不到指定的程序”的解析和解决办法。
- 基于JAVA实现的客户信息管理软件(简易)
- stm32 USART rs485 rs232
- 宿命传说2之女神召唤java_【更新公告】新SSR装备召唤概率限时UP!梅林领悟了全新助战技!...
- IEEE Transactions Latex模板使用经验总结
- linux4755代表什么权限,CentOS下chmod 755和4755的区别是什么?
- 静态HTML网页设计作品 HTML5+CSS大作业——个人网页设计(7页)
- android里图标大小设置在哪里,Android TextView设置图标,调整图标大小
- WiFi过敏?没准是心病
- JAVA求班级男女生比例_java编程:给你一个班级的名单,随机分成6个组的问题解决办法...
- Node开发实践总结-定时脚本的设计与实现
- Cornfields
- 用c语言编写程序输出* ***,用C语言如何编写程序输出以下图形
- Ta-lib学习笔记01--成交量指标