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 ...
随机推荐
- Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子
[学习笔记] Win7 Eclipse 搭建spark java1.8环境:WordCount helloworld例子在eclipse oxygen上创建一个普通的java项目,然后把spark-a ...
- Codeforces Round #590 (Div. 3)补题
要想上2000分,先刷几百道2000+的题再说 ---某神 题目 E F 赛时是否尝试 × × tag math bitmask 难度 2000 2400 状态 ∅ √ 解 E 待定 F 传送门 第一 ...
- easyui-combobox多选时的小问题
easyui-combobox可支持多选,仅需将multiple值设为true即可 $('#combobox').combobox({ url:url, multiple:true, separato ...
- 简单分析FactoryBean
1. 什么是FactoryBean FactoryBean本质上是一种Bean,只是它可以产生其他的Bean,比较特殊.在上下文getBean的时候,如果传入FactoryBean的名称,得到的是Fa ...
- 7-MySQL DBA笔记-研发规范
第7章 研发规范 本章将为读者解读一份研发规范.为了更好地协同工作和确保所开发的应用尽可能的稳定.高效,建立一套数据库相关的研发规范是很有必要的,虽然研发规范的确立和推广是一项很耗时的工作,但所取得的 ...
- PBE加密 .net 实现
using System; using System.Security.Cryptography; using System.Text; namespace Demo { internal class ...
- Spark机器学习API之特征处理(二)
Spark机器学习库中包含了两种实现方式,一种是spark.mllib,这种是基础的API,基于RDDs之上构建,另一种是spark.ml,这种是higher-level API,基于DataFram ...
- java中long类型转换为int类型
由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...
- 浅谈Promise原理与应用
在JavaScript中,所有代码都是单线程.由于该“缺陷”,JavaScript在处理网络操作.事件操作时都是需要进行异步执行的.AJAX就是一个典型的异步操作 对于异步操作,有传统的利用回调函数和 ...
- Linux学习(三)-Vi和Vim的区别
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道在vi里,按 u只能撤消上次命 ...