这次写的是unittest模块的测试用例,属于自动化的门槛,进去了基本算自动化入了门,测试内容很简单,模拟给url推送用户名、密码测试登录功能

先上代码:

#login_test.py
import requests
class Login():
def test_login(self,username,password):
url = "http://localhost:8080/login"
user_pwd = {}
user_pwd["mobilephone"] = username
user_pwd["pwd"] = password
result = requests.get(url, params=user_pwd)
list = (result.text).split(",")
return list[3].split(":")[1].split("}")[0] if __name__ == '__main__':
result = Login()
Return = result.test_login("18688773461","123456")
print(Return)
#test_case.py
from login_test import Login
from ddt import ddt,unpack,data
from openpyxl import load_workbook
import unittest
@ddt
class Run_Test(unittest.TestCase):#继承unittest.TestCase
"""
读取excel文件和cfg文件中数据
:param xlsx:
:param ws:
:return:
"""
wb = load_workbook("login_data.xlsx")
ws = wb.get_sheet_by_name("Sheet1")
list = []
list1 = []
for i in range(1, ws.max_row + 1):
list = []
for j in range(1, ws.max_column + 1):
str = ws.cell(i, j).value
list.append(str)
list1.append(list)
wb.close()
@data(*list1)
@unpack
def test_run1(self,Username,Password,Text):
self.Result = Login()
Return = self.Result.test_login(Username,Password)
self.assertEqual(eval(Return),Text)
#测试用例
if __name__ == '__main__':
unittest.main()
#run_test.py
import unittest,HTMLTestRunnerNew
import test_case
class runtest():
def run_test_1(self):
# 创建测试套件
suite = unittest.TestSuite()
# 找到目录下所有的以test开头的Python文件里面的测试用例
all_test = unittest.defaultTestLoader.discover('.','test_*.py')
# 把所有的测试用例添加进来
for i in all_test:
suite.addTests(i)
# 打开一个保存结果的html文件
fp = open('res_1.html','wb')
# 生成执行用例的对象
runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fp,title='2019年3月23日作业_测试报告',description='所有测试情况',tester = "桂马")
# 执行测试套件
runner.run(suite) def run_test_2(self):
# 创建测试套件
suite = unittest.TestSuite()
# 测试套件中添加测试用例
loader = unittest.TestLoader()
suite.addTests(loader.loadTestsFromTestCase(test_case.Run_Test))
# 打开一个保存结果的html文件
fp = open('res_2.html', 'wb')
# 生成执行用例的对象
runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fp, title='2019年3月23日作业_测试报告', description='所有测试情况',tester = "桂马")
# 执行测试套件
runner.run(suite) def run_test_3(self):
# 创建测试套件
suite = unittest.TestSuite()
# 测试套件中添加测试模块
loader = unittest.TestLoader()
suite.addTests(loader.loadTestsFromModule(test_case))
# 打开一个保存结果的html文件
fp = open('res_3.html', 'wb')
# 生成执行用例的对象
runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fp, title='2019年3月23日作业_测试报告', description='所有测试情况',tester = "桂马")
# 执行测试套件
runner.run(suite)
if __name__ == '__main__':
homework = runtest()
homework.run_test_1()
homework.run_test_2()
homework.run_test_3()

xlsx文件内容如下图:

注意点:

    1.为了提高代码的可重复利用性,所以最好功能、用例、运行报告分开写,这点最好养成习惯,很重要

    2.模块的命名,为什么要说这个呢,因为这回我在这上面卡了40多分钟,硬是找不到错误,test_case运行一切顺利,但是run_test就是报错,找了半天,最后改了模块名才发现通过了。血的教训,所以一定要记住

    3.功能未做注释是因为比较简单,最后的返回值只不过是二度切割,把返回结果的value切出来而已,也可以不切,断言换成self.assertIn()来做,不过那样不够准确,所以不太推荐

    4.用例添加进测试套件的方法不止我写的这三种,只不过这三种写起来比较简单,更多的网上也有,这里只是做一个参考和笔记

    5.原本test_case中还有setUp()、tearDown()方法,self.Result = Login()也是写在setUp()中的,但是老报错,时间又不够我排查,索性不写了,直接丢case中

    6.最后的创建套件并运行也可以不生成报告,报告不是必要的,只是顺手写上去的,也可以直接TextTestRunner运行完毕直接查看控制台

    7.果然代码还是要常码,unittest模块以前还是很熟练的,有段时间没碰,写起来就磕磕碰碰的了

备注:

    2019年3月24日更新代码,使用openpyxl、ddt模块优化test_case模块,使用修改后的HTMLTestRunner模块HTMLTestRunnerNew来美化测试报告页面

unittest模块小结的更多相关文章

  1. unittest模块的常用方法:

    unittest模块的常用方法: assertEqual(a, b)     a == b assertNotEqual(a, b)     a != b assertTrue(x)     bool ...

  2. python的单元测试unittest模块

    首先需要导入unittest模块 import unittest import  HTMLTestRunner # TestCase 也就是测试用例## TestSuite 多个测试用例集合在一起,就 ...

  3. Unittest框架小结

    在日常的自动化测试过程中,Python里有一个自带的单元测试框架是unittest模块,简单易用,这里简单介绍下其主要的用法. Unittest测试框架主要包含四个部分 TestCase 也就是测试用 ...

  4. 第二章 使用unittest模块扩展功能测试

    2.1使用功能测试驱动开放一个最简单的应用 # functional_tests.py # -*- coding: utf-8 -*- from selenium import webdriver b ...

  5. 接口测试基础——第6篇unittest模块(三)

    今天是unittest最后一讲,我们解决一下如何只运行一次setUp和tearDown方法以及简单的数据驱动的知识. 1.只运行一次setUp和tearDown方法 很简单,只需要把setUp和tea ...

  6. 接口测试基础——第6篇unittest模块(二)

    通过上次的运行,大家应该已经发现了,就是我们写了三个用例,那么在测试报告中setUp和tearDown方法分别运行了三次.没错,这也就是说,每次运行用例之前都会运行setUp和tearDown方法.今 ...

  7. Python unittest模块心得(一)

    关于unittest模块的一些心得,主要是看官网的例子,加上一点自己的理解,官网地址:https://docs.python.org/3.6/library/unittest.html 基础概念介绍: ...

  8. 基于iCamera测试mt9m034 1280X960 高动态相机模块小结

    基于iCamera测试mt9m034 高动态相机模块小结 首先看看此模块的特性 mt9m034 高动态 CMOS模块 1280*960像素 5.48 V/lux-sec >115db 摄像头模块 ...

  9. 基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结

    基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结 先看实物 M12标准无畸变镜头效果 标准CS镜头效果 iCamera底板+mt9p001安装效果 再看看c ...

随机推荐

  1. 漫画|Linux 并发、竞态、互斥锁、自旋锁、信号量都是什么鬼?(转)

    知乎链接:https://zhuanlan.zhihu.com/p/57354304 1. 锁的由来? 学习linux的时候,肯定会遇到各种和锁相关的知识,有时候自己学好了一点,感觉半桶水的自己已经可 ...

  2. Linux基础入门-文件打包与解压缩

    文件打包与解压缩: Windows上常见的压缩文件后缀有*.zip(zip程序打包压缩), *.rar(rar程序压缩), *.7z(7zip程序压缩),在Linux上常见的还有*.gz(gzip程序 ...

  3. 北京U3D外包团队 UE4红军抗战案例 Unity3D红军抗战案例 UE4下载和安装虚幻4游戏引擎

    刚完整UE4红军抗战案例 Unity3D红军抗战案例,有在线演示(版权关系不方便发图),有UE4或Unity项目定制外包开发的欢迎联系我们 进入虚幻4的官方主页(https://www.unreale ...

  4. 新手尝试Android studio连接mumu调试程序

    由于Android studio本身虚拟机比较卡在安装as的时候就没有安装.于是自己安装了一款手机模拟器mumu模拟器.我想真机可以调试那么摸仪器应该也可以,于是就从网上找资料,其实连接很简单. 1. ...

  5. abstract class VS interface

    关于抽象类 abstract class: 1. 抽象方法必须在抽象类中 2. 抽象类和抽象方法要用abstract 关键字修饰 3. 不可以用new 来实例化一个abstract类,因为调用抽象方法 ...

  6. Winform 窗体实现圆角展示

    触发窗体的Resize事件,如下所示: #region 界面实现圆角 private void LoginForm_Resize(object sender, EventArgs e) { if (t ...

  7. php7.2 sqlsrv 扩展 ubuntu Homestead centOs

    PHP 7.2.9-1+ubuntu18.04.1 安装 sqlsrv 扩展 参考文章,感谢作者(建议先看,不看也可以) https://serverpilot.io/docs/how-to-inst ...

  8. 黄聪:史上最详细的kali安装教程没有之一

    首先在vm里面新建虚拟机,直接选择典型,然后下一步.   1   2 然后到了这一步,选择中间的安装程序光盘镜像文件,然后去文件里面找你自己下载的镜像,这时候可能系统会出现无法检测此光盘镜像中的操作系 ...

  9. MongoDB中的读写锁

    1. MongoDB 使用的锁 MongoDB 使用的是“readers-writer”锁, 可以支持并发但有很大的局限性当一个读锁存在,许多读操作可以使用这把锁,然而, 当一个写锁的存在,一个单一的 ...

  10. [UE4]修改瞬移操作方式,默认正前方

    瞬移的时候,如果箭头指向正前方的角度跟中心线相差不大,则可以强制箭头指向中心线. 因为向量也可以表示方向,因此只要只要判断向量长度就是了,判断VectorLength值即可: