一、摘要

本博文将介绍Python和Selenium做自动化测试的时候,基于unittest框架,借助ddt模块使用json文件作为数据文件作为测试输入,最后借助著名的HTMLTestRunner.py生成html测试报告

二、测试代码

# encoding = utf-8
"""
__title__ = ''
__author__ = 'davieyang'
__mtime__ = '2018/4/21'
"""
from selenium import webdriver
import unittest
import time
import logging
import traceback
import ddt
from selenium.common.exceptions import NoSuchElementException # 初始化日志对象
logging.basicConfig(
# 日志级别
level=logging.INFO,
# 时间、代码所在文件名、代码行号、日志级别名字、日志信息
format='%(asctime)s %(filename)s[line: %(lineno)d] %(levelname)s %(message)s',
# 打印日志的时间
datefmt='%a, %d %b %Y %H:%M:%S',
# 日志文件存放的目录及日志文件名
filename='F:\\DataDriven\\TestResults\TestResults.TestResults',
# 打开日志的方式
filemode='w'
) @ddt.ddt
class DataDrivenTestByDDTHTR(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path="F:\\automation\\webdriver\\chromedriver.exe") @ddt.file_data("F:\\DataDriven\\testData\\test_data_list.json")
def test_dataDrivenHTRByFile(self, value):
url = "http://www.baidu.com"
self.driver.get(url)
self.driver.maximize_window()
print(value)
# 将从.json文件中读取出的数据用“||”分割成测试数据和期望的数据
testdata, execptdata = tuple(value.strip().split("||"))
# 设置隐式等待时间
self.driver.implicitly_wait(10)
try:
self.driver.find_element_by_id("kw").send_keys(testdata)
self.driver.find_element_by_id("su").click()
time.sleep(3)
# 断言期望结果是否出现在页面中
self.assertTrue(execptdata in self.driver.page_source)
except NoSuchElementException as e:
logging.error(u"查找的页面元素不存在,异常堆栈信息为:" + str(traceback.format_exc()))
except AssertionError as e:
logging.info(u"搜索 '%s',期望 '%s' ,失败" % (testdata, execptdata))
except Exception as e:
logging.error(u"未知错误,错误信息:" + str(traceback.format_exc()))
else:
logging.info(u"搜索 '%s',期望 '%s' ,通过" % (testdata, execptdata)) def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()

三、执行测试

import unittest
from Run.HTMLTestRunner import HTMLTestRunner
from DataDrivenTest.DataDrivenTestByDDTHTR import DataDrivenTestByDDTHTR
import time suit = unittest.TestSuite()
suit.addTest(unittest.makeSuite(DataDrivenTestByDDTHTR))
now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
filename = "F:\\DataDriven\\TestResults\\Results-" + now + "result.html"
print(filename)
fp = open(filename, 'wb')
runner = HTMLTestRunner(stream=fp, title='Result', description='TestReport')
runner.run(suit)
print("test_DrivenByFile finished")

最新文章

  1. 浏览器的兼容模式下的button中文字垂直方向不居中显示
  2. iOS应用九宫格算法
  3. 手机sdk 开发
  4. C# winform 模拟键盘鼠标操作
  5. 第十一&十二&十三周周记
  6. Cocos2d-x-3.0 Touch事件处理机制
  7. CentOS 7 关闭防火墙和SELinux
  8. Java基础-super关键字与this关键字
  9. jquery发送ajax请求返回数据格式
  10. 循环日期的shell
  11. 见怪不怪的typedef
  12. Js 读写cookies
  13. 您需要来自administrators的权限才能对此文件进行更改
  14. 使用PowerShell 命令集进行SQL Server 2012 备份和还原
  15. apache.commoms.digester3 解析xml文件
  16. CG之refract函数简单实现
  17. bibli直播弹幕实时爬取
  18. struts 2.5配置
  19. 【Jquery系列】之Jquery 选择器
  20. web前端(5)—— 常用标签2

热门文章

  1. JQuery Validate - 自定义js验证
  2. 【转载】DOS系统的安装
  3. 学习笔记:CentOS7学习之十八:Linux系统启动原理及故障排除
  4. Java基础篇---多线程
  5. 《Data Structures and Algorithm Analysis in C》学习与刷题笔记
  6. Python if __name__ == '__main__': 理解
  7. MySQL主从同步报错1507
  8. LeetCode. 计数质数
  9. Photon Server 实现注册与登录(五) --- 服务端、客户端完整代码
  10. Python第三方库资源