之前在公司做过自动化测试的知识分享,现在把它记录下来。
 
•一、如何更好的编写测试用例
•1.模块化:将一些基础的、共有的步骤代码独立为单独的模块,使用时再调用。好处:可以使代码复用,减少代码编写,利于变动时维护。比如登录,退出等操作。
•2.参数化:将参数变化的输入,可以读取文件,或者产生随机数。比如新增操作,很多时候要求数据唯一,参数化后可以有效解决这个问题。
•
•二、如何方便的组织、运行测试用例
•1.用例的组织架构划分清晰。这样利于查找、维护
•2.命名规范。这样便于识别哪些是测试用例
•三、用例执行结果的要求
•1.能导出结果,进行统计,并显示错误
 
•三、Unittest模块的简单介绍
•   unittest是一个单元测试的工具,提供了一些方法来方便进行单元测试。我们在这里用到它主要是解决上面说的几个问题,再概况一下就是
•1、提供用例组织与执行方法
•①unittest 所提供有 TestSuite()类,其中的addTtest()方法,可以将命名规范的用例“组装”起来(一个py文件可以有几个用例)
•②defaultTestLoader 类,discover() 方法可以识别一定命名规则的文件,结合①就可以将不同文件中全部的测试用例组装好
•③TextTestRunner()类, 通过它下面的 run()方法来运行 suite 所组装的测试用例
•2、提供比较方法
• 用例的执行,总会有预期结果。unittest提供了很多比较的方法,比如assertEqual(a, b),用法:assertEqual(first, second, msg=……..),这是相等的方法,最后的msg是当不相等时,提供的提示信息。
•
3、提供丰富的日志、清晰的报告

使用扩展HTMLTestRunner生出测试报告

 
四、实例
•文件结构:
•…/ program/ all_test.py
•                     login.py
•                     xitongguanli/ test_1.py
•                                        / test_2.py
•
•解释:①all_test.py,是组装、运行测试用例
•           ②login.py是一个独立出来的登录模块
•           ③test开头的文件,就是测试用例所在的文件
 
1.all_test.py
#coding=utf-8
import unittest
import HTMLTestRunner
import time def creatsuite():
testunit=unittest.TestSuite()
#定义测试文件查找的目录
test_dir='F:\\python\\selemium\\program'
#定义 discover 方法的参数
discover=unittest.defaultTestLoader.discover(test_dir,
pattern ='test_*.py',
top_level_dir=None)
#discover 方法筛选出来的用例,循环添加到测试套件中
for test_suite in discover:
for test_case in test_suite:
testunit.addTests(test_case)
print testunit
return testunit
alltestnames = creatsuite()
if __name__ == '__main__':
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename = 'F:\\python\\selemium\\program\\'+now+'result.html'
fp = file(filename,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream = fp,
title = u'测试报告',
description = u'用例的执行情况') runner.run(alltestnames)
fp.close()

2.login.py

#coding=utf-8
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com") def login():
driver.find_element_by_xpath("//div/div/div[@id='u1']/a[7]").click()
driver.find_element_by_css_selector("#TANGRAM__PSP_8__userName").clear()
driver.find_element_by_css_selector("#TANGRAM__PSP_8__userName").send_keys("xxxx")
driver.find_element_by_css_selector("#TANGRAM__PSP_8__password").send_keys("xxxxxxx")
driver.find_element_by_css_selector("#TANGRAM__PSP_8__submit").click()

3.test_1.py

#coding=utf-8
from selenium import webdriver
import unittest, time, login
import random random1 = random.randint(100000, 200000) class MyTest(unittest.TestCase):
u'''百度搜索用例''' def setUp(self):
self.driver = login.driver
#self.driver.maximize_window()
#self.driver.implicitly_wait(10)
#self.base_url = "http://www.baidu.com" def test_baidu(self):
driver = self.driver
login.login()
time.sleep(2)
#driver.get(self.base_url + "/")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(random1)
driver.find_element_by_id("su").click()
time.sleep(2)
title = driver.title
#self.assertEqual(title, random1+u"_百度搜索") def tearDown(self):
self.driver.quit() if __name__ == "__main__":
unittest.main()

最后的结果是这样子的:

unittest框架及自动化测试的更多相关文章

  1. unittest框架之 BeautifulReport 模板报告生成的正确姿势

    使用unittest框架的自动化测试,报告一定很重要,目前介绍一个比较高大上的报告模板 BeautifulReport.如果首次使用的话需要安装 pip install beautifulreport ...

  2. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  3. selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出

    部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...

  4. 广深小龙-基于unittest、pytest自动化测试框架之demo来学习啦!!!

    基于unittest.pytest自动化测试框架之demo,赶紧用起来,一起学习吧! demo分为两个框架:①pytest    ②unittest demo 中 包含 web.api 自动化测试框架 ...

  5. 记录python接口自动化测试--unittest框架基本应用(第二目)

    在第一目里写了几个简单demo,并把调用get和post请求的方法封装到了一个类里,这次结合python自带的unittest框架,用之前封装的方法来写一个接口测试demo 1.unittest简单用 ...

  6. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  7. selenium-webdriver(python) (十六) --unittest 框架

    学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...

  8. unittest 框架

    unittest 框架 学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试 ...

  9. unittest框架概要

    unittest是Python语言自带的单元测试框架,原名PyUnit. 认识unittest 在unittest框架中有4个重要概念:test fixture.test case.test suit ...

随机推荐

  1. JZOJ 5195. 【NOIP2017提高组模拟7.3】A

    5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto Pro ...

  2. Python数据类型的用法

    字符串的用法 res = 'hellow,world' print(res) #res.显示的都是它的方法,下划线的除外 1 判断字符串的结尾字符,返回的值的布尔形式 endswith 判断字符串的开 ...

  3. Mongodb内嵌对象关联查询

    db.-10-30T00:00:00Z"),"$lt":ISODate("2018-10-30T23:59:00Z")}, "equip.$ ...

  4. python3 练习题100例 (十二)

    题目十二:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153 ...

  5. Python中关于集合的介绍及用法

    一.集合的含义及创建方法 集合(set)是一种无序的并且里面存放不同元素的序列. 集合可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因 ...

  6. python练手习题

    不断记录python常见习题,不断寻求更多更好的解决办法.持续更新中..... 练习: 1. list两两元素交换位置,如[1,2,3,4,5,6] 执行后为 -> [2,1,4,3,6,5] ...

  7. 谋哥:《App自推广》连载2直立人行走迁徙

    [谋哥每天一干货,第六十九篇] 前篇说到声音在远古时代,是一个神奇的东西,它能够很快地把信息传播到其他地方,突破了短距离.然而能人的后代直立人学会了直立行走,他们开始走出非洲,到达遥远的中东.中国,还 ...

  8. 【Word Break II】cpp

    题目: Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where e ...

  9. Hadoop第三课

    1.3Hadoop基础知识 1.3.1术语解释 1.Hadoop1.0 • 第一代Hadoop,由分布式文件系统HDFS 和分布式计算框架MapReduce组成 • HDFS由一个NameNode和多 ...

  10. 关于caffe 是如何卷积的一点总结

    最近,在看caffe源码时,偶然在网上看到一个问题?觉得挺有意思,于是,仔细的查了相关资料,并将总结写在这里,供大家迷惑时,起到一点启示作用吧. 问题的题目是CNN中的一个卷积层输入64个通道的特征子 ...