Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构

1、Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用

------login_business.py


from Page_Object.Common_Page.login_page import Login_Page
from HTMLReport import logger
import time def login(driver, username, password):
"""
登录业务
:param driver:浏览器驱动
:param username:用户名
:param password:密码
:return:None
"""
logger().info(f"使用用户名:{username},密码:{password}进行登陆")
login_page = Login_Page(driver)
login_page.send_username(username)
login_page.send_password(password)
login_page.submit()
time.sleep(2)

----Base_url.py:对应的url地址

2、Common:与业务无关的公共模块,如对Selenium的二次封装,方便后期的调用,还有一些工具类,如在读取数据时需要对读取文件进行封装

3、PageOBject:这个就应该不用多说了,页面元素的封装,这个根据自己公司系统的业务去做分层封装(不做过多解释)

4、report:测试报告

5、TestCase:测试用例层,下面以logincase为例子

---logincase.py

import unittest
from Business.Base_url import url_index
import ddt
from Common.tools.read_txt import read_txt
from HTMLReport import logger
from Page_Object.Common_Page.index_page import Index_Page
from Common.selenium_library import SeleniumBase
from Business.login_business import login @ddt.ddt
class Test_login(unittest.TestCase): def setUp(self):
self.driver = SeleniumBase().get_web_driver() def tearDown(self): SeleniumBase(self.driver).quit() @ddt.unpack
@ddt.data(*read_txt('TestData/login_user_password.txt'))
def test_login(self, username, password, assert_type):
se = SeleniumBase(self.driver)
se.get(url_index)
login(self.driver, username, password)
se.add_page_screen_shot() if assert_type == '1':
logger().info("断言登陆成功")
text = Index_Page(self.driver).login_success() self.assertIn("测试", text, '登陆成功断言') elif assert_type == "2":
text = self.driver.find_element_by_id("submit").text
self.assertIn("立即登录", text, '登陆失败断言') elif assert_type == "3":
text = self.driver.find_element_by_id("submit").text
self.assertIn("立即登录", text, '登陆失败断言') elif assert_type == "4":
text = self.driver.find_element_by_id("submit").text
self.assertIn("立即登录", text, '登陆失败断言') else:
logger().info(f"未知断言类型{assert_type}")
self.assertTrue(False, "未知断言类型")

6、TestData:测试数据,对应用例的数据都是在这里去取

7、TestSuite:测试套件,以登录套件为例

---loginsuite.py

import unittest

from TestCase.LoginCase import login_case

def return_suite():
suite=unittest.TestSuite() loader=unittest.TestLoader() suite.addTests(loader.loadTestsFromTestCase(login_case.Test_login)) return suite

8、browser.ini:浏览器配置文件

[local]
local_browser = False
wait_time = 10 [browser]
name = chrome
;name = firefox
;name = ie
window_width =
window_height = [grid]
command_executor = http://127.0.0.1:4444/wd/hub
headless = False
proxy =

9、run.py:整体运行文件

import unittest
from TestSuite.LinesSuite import lines_suite
from TestSuite.LinesSuite import itinerary_suite import HTMLReport suite = unittest.TestSuite() # suite.addTests(login_suite.return_suite())
suite.addTests(lines_suite.return_suite())
suite.addTests(itinerary_suite.return_suite()) HTMLReport.TestRunner(
report_file_name="test",
title='WEB UI 自动化',
description='登陆',
thread_count=3
).run(suite)

10、整体框架结构图:

Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构的更多相关文章

  1. Python+selenium+unittest+HTMLTestReportCN单元测试框架分享

    分享一个比较基础的,系统性的知识点.Python+selenium+unittest+HTMLTestReportCN单元测试框架分享 Unittest简介 unittest是Python语言的单元测 ...

  2. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

  3. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  4. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  5. python+selenium +unittest生成HTML测试报告

    python+selenium+HTMLTestRunner+unittest生成HTML测试报告 首先要准备HTMLTestRunner文件,官网的HTMLTestRunner是python2语法写 ...

  6. python+selenium+unittest,爬虫电影网站

    以前经常在这个网站上下载电影下来看,这个网站比较坑的就是,主页上只有电影的名称,但是评分是看不到的:只有再点击电影名字,进入电影主页时才能看到评分.一般下载的电影都是评分高的才看,低的就忽略掉了.每次 ...

  7. python+selenium+unittest 实现自动化测试

    示例代码: baidu.py import csv #导入csv模块 from itertools import islice #从itertools导入islice,后边让其默认跳过第一行使用 fr ...

  8. Python Selenium unittest+HTMLTestRunner实现 自动化测试及发送测试报告邮件

    1.UI测试框架搭建-目录结构 2. 文件介绍 2.1.baseinfo->__init__.py 配置文件定义基础参数 #-*-coding:utf-8-*- #测试用例配置参数 base_u ...

  9. python + selenium + unittest 自动化测试框架 -- 入门篇

    . 预置条件: 1. python已安装 2. pycharm已安装 3. selenium已安装 4. chrome.driver 驱动已下载 二.工程建立 1. New Project:建立自己的 ...

随机推荐

  1. MySQL自带的性能压力测试工具mysqlslap

    mysqlslap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具. 通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个 ...

  2. shell變量和數組

    我們要知道shell是一個很重要的腳本能幫助我們完成很多事情 shell語言其實和很多的語言的語法是差不多的 變量: 變量的定義很簡單的,但是等號兩邊是不可以有空格的(不能有空格) 命名只能使用英文字 ...

  3. ASA 用TFTP 备份配置方法

    一种方法是用ASDM,在菜单样哪项里有一个backup,保存为一个压缩文件rar,恢复也是用ASDM.另一种是用TFTP SERVER 来做,电脑用网线接上ASA,还要把cisco TFTP SERV ...

  4. Georgia Tech Online Master of Science in Computer Science 项目经验分享

    Georgia Tech Online Master of Science in Computer Science 项目经验分享 Posted on 2014/04/22 项目关键词:工科名校,计算机 ...

  5. 安装composer出现链接补上的问题

    下载 Composer-Setup.exe 后安装出错: Composer Download Error Connection Error [ERR_CONNECTION]: Unable to co ...

  6. sql语句查询月份的数据

    在实际项目中,经常需要按月查询数据,在这里把我用到的sql整理一下,以便日后查看. 例如,查询当月的数据 ),addtime,)),) 查询结果: 查询上月的数据,需要用另一个sql函数,datead ...

  7. php 基于redis计数器类

    本文引自网络 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 本文将使用其incr(自增),get(获取), ...

  8. Unicode,GBK,GB2312,UTF-8概念基础(转载)

    第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标.来源:holen'blog   对字符编码与Unicode,IS ...

  9. 21天,搞定软件测试从业者必备的Linux命令

    开始之前,先同步一个结论: 对于软件测试从业者,如果你至今为止,还不懂Linux,或者完全没有接触Linux ,这是一件很危险和恐怖的事 . 此刻.现在.果断,学习Linux命令 . 如果你工作中,完 ...

  10. leetcode16—3 Sum Closet

    Given an array nums of n integers and an integer target, find three integers in nums such that the s ...