App自动化-python-Unittest框架
TestCase:
一段Testcase代码示例:
# -*- coding: utf-8 -*-
'''
Created on 2019-6-27 @author: adminstrator
'''
import unittest class UnitTestDemo1(unittest.TestCase): def setUp(self):
print('Run before test') def tearDown(self):
print('Run after test') def testCase(self):
print('test case....') if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
断言:
# -*- coding: utf-8 -*-
'''
Created on 2019-6-27 @author: adminstrator
'''
import unittest class AssertTestCase(unittest.TestCase):
'''
断言演示
''' def setUp(self):
print('Run befor testcase') def tearDown(self):
print('Run after testcase') def testAssert(self):
num1=12
num2=10 self.assertEqual(num1, num2, '两个数不相等') #最后一个参数msg是当测试用例不通过时输出的内容,当断言不通过时,不会继续执行下面的内容
self.assertNotEqual(num1, num2, '两个数相等') #self.调用类的私有方法或私有变量 if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
TestSuite:
# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest class UserCase(unittest.TestCase): def testAddUser(self):
print('add a user') def testDelUser(self):
print('delete a user') if __name__ == "__main__": #下面是3种将TestCase加到TestSuite中的方法 suite1=unittest.TestSuite(map(UserCase,['testAddUser','testDelUser'])) suite2=unittest.TestSuite()
suite2.addTests(map(UserCase,['testAddUser','testDelUser'])) suite3=unittest.TestSuite()
suite3.addTest(UserCase('testAddUser'))
suite3.addTest(UserCase('testDelUser')) trunner=unittest.TextTestRunner() #通过TextTestRunner执行TestSuite
trunner.run(suite1)
TextTestRunner:
TestCase与TestSuite单独文件的示例:
# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest class UnitTestDemoShow(unittest.TestCase): def setUp(self):
print('before testcase run') def tearDown(self):
print('after testcase run') def testOne(self):
str1='hello'
str2='hello everyone'
self.assertIn(str1, str2, '判断包含') def testTwo(self):
num1='10'
num2='10'
self.assertEqual(num1, num2, '判断相等') if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest
from UnitTestDemoShow import UnitTestDemoShow class TestSuiteFile(unittest.TestCase): def RunTestSuite(self):
testsuite=unittest.TestSuite()
testsuite.addTest(UnitTestDemoShow('testOne'))
testsuite.addTest(UnitTestDemoShow('testTwo')) runner=unittest.TextTestRunner()
runner.run(testsuite) if __name__ == "__main__": t=TestSuiteFile()
t.RunTestSuite()
HTMLTestRunner下载地址:
http://tungwaiyip.info/software/HTMLTestRunner.html
下载后存放在\python\Lib\site-packages下
验证是否导入成功:
python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
1.原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法:
2.修改汇总:
第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()
第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:
第766行,将uo = o.decode('latin-1')修改成uo = e
第772行,将ue = e.decode('latin-1')修改成ue = e
第631行,将print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
生成测试报告(TestCase还是使用之前的):
# -*- coding: utf-8 -*-
'''
Created on 2019-6-28 @author: adminstrator
'''
import unittest
from UnitTestDemoShow import UnitTestDemoShow
import time,os
import HTMLTestRunner class HTMLReportDemo(unittest.TestCase): def RunTestSuite(self):
testsuite=unittest.TestSuite()
testsuite.addTest(UnitTestDemoShow('testOne'))
testsuite.addTest(UnitTestDemoShow('testTwo')) #利用HTMLTestRunner生成测试报告
reportfile="./reports/"+str(int(round(time.time()*1000)))
os.mkdir(reportfile)
filename=reportfile+"report.html"
fp=open(filename,'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'HTMLTestRunner测试报告',description=u'这是一个HTMLTestRunner测试报告')
result=runner.run(testsuite) if __name__ == "__main__": t=HTMLReportDemo()
t.RunTestSuite()
App自动化-python-Unittest框架的更多相关文章
- 接口自动化-python unittest+requests+HTMLrunner
从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...
- python+unittest框架第一天unittest之简单认识Test Fixure:测试固件【8月17更新】
20万的慢慢会实现的吧,hhh unittest框架,我就不在介绍了,百度有很详细的介绍. 我们只要了解: 1.unittest是单元测试框架 2.它提供用例组织与执行:在实际工作中案例可能有上百条, ...
- python unittest框架装饰器
要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单 ...
- python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)
预期框架整理目标: 1.单个用例维护在单个.py文件中可单个执行,也可批量生成组件批量执行 2.对定位参数,定位方法,业务功能脚本,用例脚本,用例批量执行脚本,常用常量进行分层独立,各自维护在单独的. ...
- python unittest框架理解与总结(二)
unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是python的标准测试库,相比于其他测试 ...
- python+unittest框架第六天unittest之优化测试报告
今天的内容主要是,用第三方的HTMLRUNner 第三方的报告来优化之前第五天批量执行案例的测试报告.案例的部分看第五天的批量执行笔记~ HTMLRUNner他可以生成更美观的测试报告,基于前辈造的车 ...
- python unittest框架中addCleanup函数详解
接上一篇doCleanups说明,这次介绍下另一个很好用的函数:addCleanup 还是老规矩,看官方文档说明: addCleanup(function, *args, **kwargs)¶ Add ...
- python unittest 框架添加测试用例及运行
找出要测试的testcase,并加入到Testsuite,运行Testsuite并把结果给TestResult1.创建TestSuite实例对象suite = unittest.TestSuite() ...
- python unittest框架
四个部分: test fixture A test fixture represents(代表) the preparation needed to perform one or more tests ...
- python unittest框架中doCleanups妙用
偶看unittest官方文档中,发现一个很好用的功能函数doCleanups,看看官方是怎么解释的: doCleanups() This method is called unconditionall ...
随机推荐
- Python基础学习路径
1. Python数据结构 1. 基本数据类型(整数.小数.字符) 1.基本数据类型有5种:int bool float complex long 2.每一种数据类型该如何定义 3.数据类型之间可以强 ...
- 笔记-2:python基本数据类型
1.数字类型 1.1 整数类型 整数类型有4种进制表示:十进制,二进制,八进制,十六进制,默认情况下,整数采用十进制. 整数类型有4种进制:十进制. 二进制. 八进制和十六进制. 默认情况, 整数采用 ...
- Python 流程控制与循环体
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- 获取windows进程信息及CListCtrl控件(List Control)练习
环境:VS2010/MFC/对话框 效果图: 目录: 1. 关于windows进程信息获取 2. CListCtrl的使用 ------------------------------------ ...
- lua堆栈
lua堆栈 来源 https://blog.csdn.net/suhuaiqiang_janlay/article/details/56702381 来源 https://blog.csdn.net/ ...
- zepto学习(一)之click事件和tap事件比较
一.click 和 tap 比较 两者都会在点击时触发,但是在手机WEB端,click会有 200~300 ms,所以请用tap代替click作为点击事件. singleTap和doubleTap分别 ...
- Subplots
数据读取: Subplotting 先展示下我们在画一张图时的步骤 生成一个matplotlib Figure对象 生成一个matplotlib AxesSubplot 对象,然后将其赋值给Figur ...
- 红外 NEC编码
它是一种电磁波,可以实现数据的无线传输 它的波长范围为760nm ~ 1mm,不为人眼所见 紫外光波长为10-400nm 红外与蓝牙 红外:对准.直接.0-10米,单对单 蓝牙:10米左右,加强信号后 ...
- 2.XML语言
XML语言 常见应用: XML技术除用于 /*保存有关系的数据*/之外,它还经常作软件配置文件,以描述程序模块之间的关系. 在一个系统软件中,为提高系统的灵活性,它所启动的模块通常由其配置文件决定 例 ...
- IDEA乱码总结和处理
工程乱码 打开File-Setting, 找到File Encodings这个选项,把encoding设置成你工程的编码即可,一般是UTF-8,如下图(红框的地方),然后重新rebuild一下,基本就 ...