【python接口自动化】初识unittest框架
本文将介绍单元测试的基础版及使用unittest框架的单元测试。
完成以下需求的代码编写,并实现单元测试
账号正确,密码正确,返回{"msg":"账号密码正确,登录成功"}
账号和密码任一为空,返回{"msg":"所有参数不能为空"}
账号/密码错误,返回{"msg":"账号/密码错误"}
基础代码实现:
- 定义方法,实现基本需求:
account_right = "python"
pwd_right = "python666"
def userLogin(account=None, pwd=None):
if not account or not pwd:
return {"msg":"所有参数不能为空"}
if account != account_right or pwd != pwd_right:
return {"msg":"账号/密码错误"}
if account == account_right and pwd == pwd_right:
return {"msg":"账号密码正确,登录成功"}
return {"msg":"未知错误,请联系管理员"}
对代码进行验证,是否符合需求:
- 验证方法1:
print(userLogin("",""))
print(userLogin("python666","python"))
print(userLogin("","python666"))
print(userLogin("python",""))
print(userLogin("python","python666"))
验证结果:

分析:直接调用userLogin方法,获取各种参数对应的返回结果
- 验证方法2:
if __name__ == '__main__':
try:
assert userLogin("","") == {"msg":"所有参不能为空"}
assert userLogin("python666","python") == {'msg': '账号/密码错误'}
assert userLogin("","python666") == {'msg': '所有参数不能为空'}
assert userLogin("python","") =={'msg': '所有参数不能为空'}
assert userLogin("python","python666") == {'msg': '账号密码正确,登录成功'}
except Exception as e:
print("啊哦,测试失败")
else:
print("恭喜!全部用例测试通过")
验证结果:

分析:通过assert判断,写入参数调取userLogin方法时得到的响应和预期的响应是否一致,如果一致就打印“全部通过”,如果有不一致的则会打印“测试失败”
此处使用到的try...except...else组合:不论如何一定会执行try下的代码,如果有报错则执行except下的代码,如果没有,则执行else下的代码。
- 验证方法3:使用unittest框架
另写一个python文件,则需导入userLogin方法
import unittest
class MyTestCase(unittest.TestCase):
def test_empty(self):
expected = {"msg":"所有参数不能为空"}
actual = userLogin("","")
self.assertEqual(expected,actual)
def test_pwd_wrong(self):
expected = {"msg":"账号/密码错误"}
actual = userLogin("python","python6")
self.assertEqual(expected,actual)
def test_account_empty(self):
expected = {"msg":"账号/密码错误"}
actual = userLogin("python666","python")
self.assertEqual(expected,actual)
def test_login_ok(self):
expected = {"msg":"账号密码正确,登录成功"}
actual = userLogin("python","python666")
self.assertEqual(expected,actual)
if __name__ == '__main__':
unittest.TestCase()
验证结果:

分析:unittest框架中自带assert,实现的效果和方法1、2并无不同,只不过这样更好管理用例,可视化测试结果,以及产出测试报告。
self.assertEqual(expected,actual)即是,判断expected和actual的返回值相等。
下一节:如何使用unittest框架产出可视化测试报告
【python接口自动化】初识unittest框架的更多相关文章
- python接口自动化28-requests-html爬虫框架
前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...
- python接口自动化24-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
- 2020年第二期《python接口自动化+测试开发》课程,已开学!
2020年第二期<python接口自动化+python测试开发>课程,12月15号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:12月15号-3月29 ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
- Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要
1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...
- python接口自动化-Cookie_绕过验证码登录
前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...
- python接口自动化-参数化
原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...
- python接口自动化 -参数关联(一)
原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...
- python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)
前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...
- python接口自动化6-重定向(Location)
前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...
随机推荐
- Knight Moves UVA - 439
A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the sh ...
- jira 改变issue状态触发jenkins构建/发布
目录 jira中issue状态的改变触发Jenkins构建 jira中定制新的workflow,作为jenkins发布使用流程 大家可以参考我的这个workflow 设置workflow 使用Tran ...
- elasticsearch jvm优化
测试环境elasticsearch jvm 4G jdk1.8 [serveradm@test-log-server elasticsearch]$ java -version java versio ...
- 【责任链模式】责任链模式结合Spring实战Demo
备注: 责任链与策略模式有很多相似之处,如都是行为型设计模式,都能够处理代码中的if-else逻辑 主要区别在于: 策略模式 封装了算法,通过上下文对象去接受客户端的数据,根据数据类型执行不同的算法 ...
- HTML5中meta属性的使用详解
meta属性在HTML中占据了很重要的位置.如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等.虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能够熟 ...
- hdu4791水题
题意: 打印东西,给你区间和每个区间的价格,然后输入任务张数,输出最少花费.. 题解: 昨晚的小测试就有这个题目,当时蒙B了,怎么也读不懂题目,一直纠结怎么把150拆成1 ...
- UVA10047独轮车
题意: 给你一个独轮车,轮子上有五个扇形,每过一个格子就转过一个扇形,刚开始的时候方向是向北的,绿色上行向下,每一次可以有三种操作,到下一个格子,左转90度,右转90度,每一次操作都花费时间 ...
- NSIS制作安装包笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包
前言 做产品时,定制的自定义安装界面常有的,使用NSIS + Qt可以完美的定制基于QT的安装界面,先从纯NSIS开始,制作常规的安装包. 应用程序的发布方式 应用程序发布的时候,具备以下 ...
- scrapy爬虫案例--爬取阳关热线问政平台
阳光热线问政平台:http://wz.sun0769.com/political/index/politicsNewest?id=1&page=1 爬取最新问政帖子的编号.投诉标题.投诉内容以 ...
- FTP主动模式(PORT)与被动模式(PASV)
待完善 参考文章0 参考文章1