之前在公司做过自动化测试的知识分享,现在把它记录下来。
 
•一、如何更好的编写测试用例
•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. Java List 的深拷贝

    老是会遇到深拷贝与浅拷贝的问题,这里进行了一些測试.代码例如以下: </pre><pre name="code" class="java"&g ...

  2. C语言实例解析精粹学习笔记——44(冒泡排序)

    冒泡排序,从序列的最后一个元素与前一个元素比较大小,如果R[n-1]>R[n]则交换两个元素的位置(R[0]作为临时存放区)将最小的数据交换到R[1],第二次循环将第二小的数交换到R[2].通过 ...

  3. ACM-ICPC 2018 徐州赛区网络预赛

    A. Hard to prepare #include <bits/stdc++.h> using namespace std; ; ]; ]; int main() { int T; i ...

  4. phpmyadmin漏洞利用general_log和general_log_file拿权限

    我们如果知道phpmyadmin和网站的绝对路径后,可以利用into outfile写马拿到权限,但是吧有新版本的mysql和一些系统设置的问题这个函数受到了secure-file-priv这个的影响 ...

  5. 微信小程序-----校园头条详细开发之注册登录

    1.注册登录功能的实现 1.1结构 1.2 代码实现 1.2.1  为了通信的安全着想,在此我是通过小程序端获得code,然后传递给后端,在后端向微信后台发送api请求,解密,从而得到用户的唯一标示o ...

  6. mojoportal在IE10中点击ImageButton出错的处理方法

    在ie10中,如果点击了mojoportal中的imagebutton,会出现错误,在ie10之前的浏览器,及ie10的兼容模式中及谷歌浏览器中都不会出现. 日志中 错误信息如下: 2013-09-2 ...

  7. Unity 碰撞检测

    武器与怪物的碰撞 目前来说有三种思路,其实前两种算变种了: 1.动画关键帧回调 + 范围检测.http://blog.csdn.net/u013700908/article/details/52888 ...

  8. Unity 脚本<2>

    UnityEngine; using System.Collections; public class PlayerControl : MonoBehaviour { [HideInInspector ...

  9. hdu 4176

    Class Statistics Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  10. nyoj 题目14 会场安排问题

    会场安排问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工 ...