单元测试框架(unittest)-selenium自动化测试

一:简介

1.unittest(PyUnit):具备创建测试用例,测试套件,测试夹具能力

Test Fixture(测试夹具):使用测试夹具可定义单个或多个在测试执行之前的准备工作和执行之后的清理工作

Test Case(测试用例):unittest中执行测试的最小单元,通过unittest提供的assert方法来验证一组特定的操作和输入以后得到的具体响应,提供一个名为TestCase的基础类,可用来创建测试用例,

Test Suite(测试套件):一个测试套件是多个测试或测试用例的集合,针对被测程序的对应功能和模块创建的一组测试,一个测试套件内的测试用例将一起执行。

Test Runner(测试执行器):负责测试执行调度并且生成测试结果给用户,可使用图形界面,文本界面或者特定的返回值来展示测试执行结果。

Test Report(测试报告):展示所有执行用例的成功或者失败状态的汇总。

2.xUnit测试框架与unittest类似

分为3部分:Arrange:初始化测试前置条件

Act:执行功能操作

Assert:校验实际结果与预期结果是否一致

二:TestCase类

1.使用方法:通过继承testcase并且在测试类中为每一个测试添加测试方法来创建单个测试或一组测试,为创建测试,使用testcase类中assert方法,每个测试任务是调用assertEqual()来校验预期结果,调用assertTrue()来验证条件,或者调用assertRaises()来验证预期的异常

除了添加测试,还可添加测试夹具-setUP()方法和tearDown()方法,创建或处置测试用例所需要的任何对象和条件

使用unittest,通过继承testcase类然后添加一个测试方法

2.unittest

#引入unittest模块

import unittest

from selenium import webdriver

#定义一个继承testcase类的子类

class SearchTest(unittest.TestCase):

#setup()方法:测试前的初始化,此方法没有参数而且不返回任何值

def setUp(self):

#创建chrome浏览器

self.driver=webdriver.Chrome()

self.driver.implicitly(30)

self.driver.maxmize_window()

#访问某个网页

self.driver.get(“http://www.imooc.com/”)

#给测试方法命名为test开头,这种命名约定通知test runner哪个方法代表测试方法,

assertEqual()方法来验证程序搜索该术语返回的结果是否和预期结果相匹配

def test_search_by_category(self):

#输入搜索文本 self.search_field=self.driver.find_element_by_class_name(“search-input”)

self.search_field.clear()

#用send_keys()方法输入新的特定值,用submit()方法提交搜索请求

self.search_field.send_keys(“python”)

self.search_field.submit()

#获得所搜课程数是否与判断一致

courses=self.driver.find_elements_by_xpath()

self.assertEqual(2,len(courses))

#tearDown:清理所有初始化值,关闭窗口

@classmethod

def tearDown(self):

self.driver.quit()

为了通过命令行运行测试,可在测试用例中添加对main方法调用,使用verbosity参数以便使详细测试总量展示在控制台上

if name==‘main’:

unittest.main(verbosity=2)

#可把测试脚本保存为python脚本,用命令执行即可:python searchtest.py

测试结束后,unittest会把测试结果展示在控制台上

可通过使用setUpClass()方法和tearDownClass()方法及@classmethod标识来实现类级别初始化

三:断言

unittest的TestCase类提供了很多实用的方法来校验预期结果和程序返回的实际结果是否一致,这些方法要求必须满足某些条件才能继续执行接下来的测试,例如等价校验,逻辑校验,异常校验,若断言通过了,接下来测试代码才会执行,相反测试停止并且给出异常信息。

图片发自简书App


四:测试套件

应用unittest的TestSuites特性,将不同测试组成一个逻辑组,设置统一的测试套件,再通过一个命令执行测试。通过TestSuites,TestLoader,TestRunner

import unittest

from searchtests import SearchTests

from homepagetest import HomePageTests

#导入二个中所有测试

search_tests=unittest.TestLoader().loadTestFromTestCase(SearchTests)

home_page_tests=unittest.TestLoader().loadTestsFromTestCase(HomePageTest)

#创建一个测试套件结合二个测试

smoke_tests=unittest.TestSuite([home_page_tests,search_tests])

#执行测试套件

unittest.TextTestRunner(verbosity=2).run(smoke_tests)

TestLoader类:得到指定测试文件中所有测试方法且用于创建测试套件

TestRunner类:通过调用测试套件来执行测试中类

五:生成HTML格式测试报告

unittest在命令行输出测试结果,可用HTMLTestRunner实现

文章最后发布于: 2019-11-20

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 仅仅使用Selenium不能实现执行测试的前置条件,测试后置条件,对比预期结果和实际结果,检查程序的状态,生成测试...
    炫彩流萤ying阅读 337评论 0 0
  • 参考来源:Mushishi_xu博主和huilan_same同行的分享 前言 unittest是一个python版...
    keitwo阅读 2,504评论 0 9
  • 接口测试自动化的优点: 1,web自动化说起来很多人都会直接想到UI自动化这个设计,很少有人直接第一个概念是接口自...
    路边看雪的小男孩阅读 4,908评论 1 26
  • 平衡一式 1、问题,右脚无法踩实地面,右脚内沿松懈 原理,右腿臀腿外侧没有收紧发力 调整,收紧臀腿外侧向内...
    小薇子1106阅读 210评论 0 0
  • 尊敬的老师家长,朋友们你们好: 我是王博岩的妈妈,很荣幸能作为家长代表发言。首先感谢两位老师给予我这么好的...
    A平安是福_cf9c阅读 383评论 0 0