什么是自动化测试呢?
自动化测试的本质就是把手工测试的一系列动作通过自动化的形式实现。
什么情况下需要用自动化测试呢?
1、需求不会频繁变动
因为需求频繁变动,页面就会频繁变动,可能刚写好测试脚本就立马要修改了。
2、UI比较稳定
UI频繁变动,功能和控件就会变动,需要不断调试脚本。
3、项目周期较长
项目周期长,整个UI自动化覆盖率就会较高,会有充分的时间去填充自动化测试场景。
搭建自动化测试框架
1、case:测试用例
setUp()方法:初始化操作,最先执行,比如打开浏览器
tearDown()方法:最后执行,比如关闭浏览器
test方法:每一个test都对应一个测试用例(必须以test为开头)
执行顺序:setUp()方法、test方法、 tearDown()方法
最后在末尾加上如下代码,批量运行自动化测试脚本
def suite_1():
# 创建一个测试套件
suite = unittest.TestSuite()
# 将测试用例加载到测试套件中
# 创建一个用例加载对象
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(proadmin))
return suite
if __name__ == '__main__':
now = time.strftime('%Y-%m-%d-%H_%M_%S', time.localtime(time.time()))
day = time.strftime('%Y-%m-%d', time.localtime(time.time()))
#根据case添加的先后顺序执行
#如果没有指定添加路径需要创建路径(获取报告的路径)
path=r'C:\Users\ss\PycharmProjects\POM二期\report'+'\\'+day
if not os.path.exists(path):
print('已被删除')
os.makedirs(path)
else:
pass
report_path=path+'\\'+now+"index.html"
report_title=u"POM二期自动化测试报告"
desc=u"POM二期自动化测试报告详情"
with open (report_path,'wb') as fp:
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=report_title, description=desc)
runner.run(suite_1())
.代表通过,F代表未通过,E表示程序错误
2、public:封装一些公用的类和方法
比如登录、忘记密码等
3、report:测试报告
4、HTMLTestRunner:生成测试报告相关内容
# -*- coding: utf-8 -*-
# test
"""
A TestRunner for use with the Python unit testing framework. It
generates a HTML report to show the result at a glance.
The simplest way to use this is to invoke its main method. E.g.
import unittest
import HTMLTestRunner
... define your tests ...
if __name__ == '__main__':
HTMLTestRunner.main()
For more customization options, instantiates a HTMLTestRunner object.
HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.
# output to a file
fp = file('my_report.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='My unit test',
description='This demonstrates the report output by HTMLTestRunner.'
)
# Use an external stylesheet.
# See the Template_mixin class for more customizable options
runner.STYLESHEET_TMPL = '<link rel="stylesheet" href="my_stylesheet.css" type="text/css">'
# run the test
runner.run(my_test_suite)
------------------------------------------------------------------------
Copyright (c) 2004-2007, Wai Yip Tung
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name Wai Yip Tung nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""
# URL: http://tungwaiyip.info/software/HTMLTestRunner.html
__author__ = "Wai Yip Tung, Findyou"
__version__ = "0.8.2.1"
"""
Change History
Version 0.8.2.1 -Findyou
* 支持中文,汉化
* 调整样式,美化(需要连入网络,使用的百度的Bootstrap.js)
* 增加 通过分类显示、测试人员、通过率的展示
* 优化“详细”与“收起”状态的变换
* 增加返回顶部的锚点
Version 0.8.2
* Show output inline instead of popup window (Viorel Lupu).
Version in 0.8.1
* Validated XHTML (Wolfgang Borgert).
* Added description of test classes and test cases.
Version in 0.8.0
* Define Template_mixin class for customization.
* Workaround a IE 6 bug that it does not treat <script> block as CDATA.
Version in 0.7.1
* Back port to Python 2.3 (Frank Horowitz).
* Fix missing scroll bars in case_detail log (Podi).
"""
# TODO: color stderr
# TODO: simplify javascript using ,ore than 1 class in the class attribute?
import sys
import time
import datetime
from io import StringIO
import unittest
from xml.sax import saxutils
# ------------------------------------------------------------------------
# The redirectors below are used to capture output during testing. Output
# sent to sys.stdout and sys.stderr are automatically captured. However
# in some cases sys.stdout is already cached before HTMLTestRunner is
# invoked (e.g. calling logging.basicConfig). In order to capture those
# output, use the redirectors for the cached stream.
#
# e.g.
# >>> logging.basicConfig(stream=HTMLTestRunner.stdout_redirecto