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 ...
随机推荐
- 题解 CF546C 【Soldier and Cards】
思路 是一道水题,可以用队列+模拟来写,注意不要拿完队列中的元素! 代码 #include<iostream> #include<cstdio> #include<que ...
- golang之工厂模式
说明: golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题 如果包里面的结构体变量首字母小写,引入后,不能直接使用,可以工厂模式解决: ch1.go package ch1 type ...
- Java 抽象类详解
在<Java中的抽象方法和接口>中,介绍了抽象方法与接口,以及做了简单的比较. 这里我想详细探讨下抽象类. 一.抽象类的定义 被关键字“abstract”修饰的类,为抽象类.(而且,abx ...
- IDEA中安装go插件,如何能够配置go SDK?
最近在学习go语言,一个是因为区块链的技术热潮,另一个是接手的项目有用到go写多线程高并发,因此决定自学go. 第一个遇到的问题就是环境! 通过一个晚上的摸索,大概步骤如下: 在IDEA中先打开set ...
- hdu 6043 KazaQ's Socks
规律题.我自己写的规律对长度为2的要特判,wa一万次... 规律题目,容易错的反而是数据小的时候,得长记性. 题解:规律 先是1~n 然后1~n-2 n-1 1~n-2 n 交替出现 比如当n=4 ...
- Java通过Socket和动态代理实现简易RPC框架
本文转自Dubbo作者梁飞大神的CSDN(https://javatar.iteye.com/blog/1123915),代码简洁,五脏俱全. 1.首先实现RpcFramework,实现服务的暴露与引 ...
- 尝试 javascript 一对多 双向绑定器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- c# 自定义解析JSON字符串数据
解析json字符串有很多方式, 1 : 在网上下载json解析的dll类库并添加引用, 调用相关方法; 2 : 使用自带类库JavaScriptSerializer的序列号和反序列化; 对于以上两个方 ...
- Web框架概述——React.js
目前,在前端Web开发中,三大热门框架为React.js,Vue.js,Angular.js .当然,三大框架各有各的优缺点,这里就不多说了,下面我就针对前段时间所学的React框架做一下整体知识点的 ...
- Java并发编程之线程池及示例
1.Executor 线程池顶级接口.定义方法,void execute(Runnable).方法是用于处理任务的一个服务方法.调用者提供Runnable 接口的实现,线程池通过线程执行这个 Runn ...