之前在公司做过自动化测试的知识分享,现在把它记录下来。
 
•一、如何更好的编写测试用例
•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. OpenFaceswap 入门教程(1):软件安装篇

    ---恢复内容开始--- 众多换脸软件中,DeepFaceLab其实是安装和使用最方便,更新最快的,但是由于其没有可是化界面,对于很新手来说,可能入门还是有点难度.那么今天就来介绍一款操作极其直观和简 ...

  2. P1101 单词方阵

    题目描述 给一 n \times nn×n 的字母方阵,内可能蕴含多个"yizhong"单词.单词在方阵中是沿着同一方向连续摆放的.摆放可沿着 88 个方向的任一方向,同一单词摆放 ...

  3. Kubernetes添加带Quota限额的CephFS StorageClass

    1. 在Ceph上为Kubernetes创建一个文件系统 # ceph osd pool create cephfs_data # ceph osd pool create cephfs_metada ...

  4. windows下的命令

    1.cd 现在默认只能在当前盘符中改变目录,如果要改变盘符则需要多加一个/d命令. cd /d d:/git/springTest 2.chdir 显示当前目录名或改变当前目录. CHDIR [/D] ...

  5. daily algorithm 判断链表是否有环

    public static boolean isLoopLink(ListNode head) { if (head == null) { return false; } ListNode fast ...

  6. C#入门篇5-7:流程控制语句 continue语句

    #region continue语句 public class ContinueApp { public static void Fun1() { //标签打印显示1…30,若能被3整除则不打印. ; ...

  7. leetcode 【 Partition List 】python 实现

    题目: Given a linked list and a value x, partition it such that all nodes less than x come before node ...

  8. Python subprocess.Popen中communicate()和wait()区别

    刚开始我是使用的wait(),但是当adb命令返回太多时,程序就会卡死,查询得知原因后,才使用了communicate(),communicate()返回一个元组:(stdoutdata, stder ...

  9. Python基础-week02 Python的常用数据类型

    一.模块初识 import导入Py自带模块例如os,sys等及其自己编写的Py文件,导入到其他文件中,默认查找当前目录.如果不在同一目录,会报错,将该自定义py文件模块放到site-packages目 ...

  10. 菜鸟之路——机器学习之非线性回归个人理解及python实现

    关键词: 梯度下降:就是让数据顺着梯度最大的方向,也就是函数导数最大的放下下降,使其快速的接近结果. Cost函数等公式太长,不在这打了.网上多得是. 这个非线性回归说白了就是缩小版的神经网络. py ...