TestCase——> Test Fixure测试固件

|

TestSuite测试套件——>TestRunner测试运行器

|

TestReport

测试断言

verbosity=2

0代表得到执行的测试总数和全局结果

1代表得到成功的显示,失败的显示f,错误的显示e,默认的是1

2可以得到详细的信息

1.unittest各个组件

2.unittest测试固件

a.setUp&tearDown

b.setUpClass&tearDownClass

#!/usr/bin/env python
#coding:utf-9 import unittest
import selenium import webdriver class F2(unittest.TestCase):
@classmethod
def selfUpClass(cls):
cls.driver=webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.implicityly_wait(30)
cls.driver.get("http://www.baidu.com")
@classmethod
def tearDown(cls):
cls.driver.quit()
def test_baidu_new(self):
self.driver.find_element_by_link_text('新闻').click()
def test_baidu_map(self):
self.driver.find_element_by_link_text('地图').click()
if __name__=="__main__":
unittest.main(verbosity=2)
类方法:会出现找不到元素的问题
改写成:
def test_baidu_new(self):
self.driver.find_element_by_link_text('新闻').click()
self.driver.back() import  unittest
from selenium import  webdriver class F3(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('http://www.baidu.com')     def tearDown(self):
        self.driver.quit()     def test_baidu_news(self):
        self.driver.find_element_by_link_text('新闻').click()     def test_baidu_map(self):
        self.driver.find_element_by_partial_link_text('图').click() if __name__ == '__main__':
    unittest.main(verbosity=2)

c.程序执行的顺序

d.测试用例的编写方法

写注释,好判断是哪个用例有错误

3.测试执行

4.构建测试套件,就是测试集

a用例按顺序执行(addTest)

#!/usr/bin/env python
#coding:utf-9 import unittest
import selenium import webdriver class BaiduTest(unittest.TestCase):
@classmethod
def selfUpClass(cls):
cls.driver=webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.implicityly_wait(30)
cls.driver.get("http://www.baidu.com")
@classmethod
def tearDown(cls):
cls.driver.quit()
def test_baidu_new(self):
self.driver.find_element_by_link_text('新闻').click()
self.driver.back()
def test_baidu_map(self):
self.driver.find_element_by_link_text('地图').click()
self.driver.back()
if __name__=="__main__":
suite=unittest.TestSuite()初始化
suite.addTest(BaiduTest('test_baidu_new'))
suite.addTest(BaiduTest('test_baidu_man'))
unittest.TextTestRunner(verbosity=2).run(suite)
执行顺序还是会按照ASCII字母顺序执行,
解决方法就是把用例名用数字编号显示,但是addTest会产生很多相同代码,解决办法就是按类执行
if __name__=="__main__":
suite=unittest.TestSuite()初始化
suite.addTest(BaiduTest)
unittest.TextTestRunner(verbosity=2).run(suite)

b.测试用例执行顺序的详解

c.按测试类执行makeSuite,是个函数

#!/usr/bin/env python
# coding:utf-8 import unittest
from selenium import webdriver class F7(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_001(self):
pass
def test_002(self):
pass
if __name__=="__main__":
suite=unittest.TestSuite(unittest.makeSuite(F7))
unittest.TextTestRunner(verbosity=2).run(suite)

d.加载测试类

e按测试模块来执行

if __name__=="__main__":
suite=unittest.TestLoader().loadTestsFromModult('f8.py')
unittest.TextTestRunner(verbosity=2).run(suite)

f优化测试套件

#!/usr/bin/env python
# coding:utf-8 import unittest
from selenium import webdriver class BaiduLink(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('http://www.baidu.com')
def tearDown(self):
self.driver.quit()
pass
def test_001(self):
self.driver.find_element_by_link_text('新闻').click()
def test_002(self):
self.driver.find_element_by_link_text('地图').click()
@staticmethod
def suite():
suite = unittest.TestSuite(unittest.makeSuite(BaiduLink))
return suite
if __name__ =="__main__":
unittest.TextTestRunner(verbosity=2).run(BaiduLink.suite())

5.分离测试固件(模块化的应用)

init.py

#! /usr/bin/env python
codring:utf-8 import unittest
from selenium import webdriver
class Init(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.driver.implicity_wait(30)
self.driver.get('http://www.baidu.com')
def tearDown(self):
self.driver.quit()
#!/usr/bin/env python
# coding:utf-8
import unittest from Day10.Init import *
class BaiduSo(Init): self test_baidu_news(self):
self.driver.find_element_by_id('kw').send_keys('webdriver') if __name__=="__main__":
unittest.main(verbosity=2) 取消测试用例
@unittest.skip('该功能已经取消,忽略该测试用例的执行')
@unittest.expectedFailure 期望测试用例执行失败
 

6.测试断言

assertEqual(a,b)  内容一致,类型一致

#coding:utf-8
import unittest
from Day10.init import * class BaiduLink(Init):
def test_baidu_news(self):
print(self.driver.title,type(self.driver.title))
self.assertEqual(self.driver.title,u'百度一下,你就知道') if __name__=="__main__":
unittest.main(verbosity=2)

assertTrue(x)

def test_baidu_so(self):
so = self.driver.find_element_by_id('kw')
print so.is_enable()
self.assertTrue(so.is_enabled())

assertIn(a,b)

def test_baidu_title(self):
self.assertIn('百度',self.driver.title)

测试断言注意事项

   不正确的使用if

  不正确的使用异常

7.批量执行测试用例(discover)

#!/usr/bin/env python
# coding:utf-8 import unittest
import os def allTests():
suite=unittest.TestLoader.discover(
start_dir = os.path.dirname(__file__),
pattern = 'test_*.py',
top_level_dir=None)
return suite def run():
unittest.TextTestRunner(verbosity=2).run(allTests()) if __name__=="__main__":
run()

a.获取所有测试用例

b.discover方法的解读

8.生成测试报告

a.python2测试报告的生成

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

b.python3测试报告的生成

!/usr/bin/env python
# coding:utf-8 import unittest
import os
import HTMLTestRunner def allTests():
suite=unittest.TestLoader.discover(
start_dir = os.path.dirname(__file__),
pattern = 'test_*.py',
top_level_dir=None)
return suite def run():
fp=os.path.join(os.path.dirname(__file__),'report','testReport.html')
HTMLTestRunner.HTMLRunner(
stream = open(fp,'wb'),
title ='自动化测试报告',
description='自动化测试详细信息').run(allTests()) if __name__=="__main__":
run()

c.测试报告的注意事项

d.新增当前时间

9.unittest的缺陷

10.Coverage的应用

Python-Unittest的更多相关文章

  1. 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"

    在写一个简单的python测试程序的时候,发现eclipse中Run as "Python run 和 Python unittest”结果不一样?为什么会不一样? 先贴一下代码段: # - ...

  2. 自动化测试神器 之 python unittest 断言

    自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest  提供了一个比较完整的断言方法.unittest框架测 ...

  3. 第二种方式,修改python unittest的执行顺序,使用猴子补丁

    1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传 ...

  4. Pycharm上python unittest不执行"if __name__ == '__main__' "问题or选择非unittest run

    转:http://www.cnblogs.com/csjd/p/6366535.html python unittest不执行"if __name__ == '__main__' " ...

  5. 简单实现接口自动化测试(基于python+unittest)

    简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...

  6. python+unittest 搭建简易的接口测试框架

    主要介绍如何使用python+unittest快速搭建一个接口测试的框架 1.安装python  unittest 2.新建一个python项目ApiTest 在setUp和setDown里设置一些需 ...

  7. Python unittest基本框架组成(1)

    Python的标准库——unittest(可以实现自动化测试框架的搭建) python unittest四大组成“元件”: test fixture(测试脚手架)——测试代码的运行环境,指测试准备前和 ...

  8. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  9. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

  10. Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发接口化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLRe ...

随机推荐

  1. java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理

    本文核心:线程池ThreadPoolExecutor基础梳理 一.实现多线程的方式 1.继承Thread类,重写其run方法 2.实现Runnable接口,实现run方法 3.实现Callable接口 ...

  2. 去掉win7快捷方式小箭头

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" ...

  3. 批量找注入 python3+sqlmap结合

    注入一直都是用sqlmap  导致本来就不怎么精通的手工注入现在就忘的一干二净 想实战练习  却一时又找不到有注入的网站   于是便有了这篇文章 想找个批量获取域名链接的工具   但都是只是获取域名而 ...

  4. sql注入-推断是否存在SQL注入-单引号

    来自:https://www.cnblogs.com/ichunqiu/p/5749347.html 首先我们需要了解数据是通过什么方式进行输入,这里我总结了三个: GET请求:该请求在URL中发送参 ...

  5. 2019软件工程第二次作业(VS2017中对C++的单元测试)

    建立工程,分别编写cpp和头文件 cpp文件中的代码如下: #include<iostream> #include"test.h" using namespace st ...

  6. JWT(JSON Web Token) 【转载】

    JWT(JSON Web Token) 什么叫JWTJSON Web Token(JWT)是目前最流行的跨域身份验证解决方案. 一般来说,互联网用户认证是这样子的. 1.用户向服务器发送用户名和密码. ...

  7. vue 项目 使用sass,node-sass 安装方法及cnpm下如何安装node sass

    内容为转载,方便用时查阅,原文地址: https://www.cnblogs.com/crazycode2/p/6535105.html 1,使用save会在package.json中自动添加. 1 ...

  8. 第一章 XAML概览

    1.1 XAML是什么? XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言.也就是说在开发一个应用程序时,我们可 ...

  9. 2018总结-->2019新目标

    2018完成的事情: ①考到了驾照: ②刷了很多题,春季找到了实习,赚到了去日本旅游的经费和2019毕业租房的预算,最后签了offer: ③去了西安.天津.山西,看到了不一样的人和事: ④发了小论文, ...

  10. 安装.net 服务时出现0x80131515错误的解决办法

    使用InstallUtil.exe安装一个用.NET写的Windows服务时,报错了,错误信息如下: Exception occurred while initializing the install ...