IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 我如何搭建自动化测试框架_03参数化 -> 正文阅读

[系统运维]我如何搭建自动化测试框架_03参数化

我如何搭建自动化测试框架_03参数化

参考下面的文章,但是我看这里使用xlwt,使用起来不是特别好看,就顺便改改啦,改成openyxll库,就是好看一下,不过的hua,我看网上很多的教程,代码都相对比较零散,我争取写好看一点吧.相当于是后续想要复用代码也会方便很多.

https://blog.csdn.net/huilan_same/article/details/76572466

在读写openyxl方面的话,就参考这个啦,写的还是很漂亮的,确实是

https://blog.csdn.net/David_Dai_1108/article/details/78702032

这一节主要写的就是那个工具工具方法读取配置文件,或者测试数据文件,然后将这些数据文件作为测试的输入们通常会结合subtest来使用.我觉得在各个公司中,应该还是使用的比较少的.这里的读取文件的话,也可以扩展为读mysql数据库,然后这些然后再数据载体中同时读取其实数据,过程数据和期望数据,四个不错的方案,但是缺点也很明显,那就是用例和数据不放在一起,也就是不够直观.但下面仅仅作为学习使用,后续的使用再看实际情况啦.

首先是读取excel的代码,这个是我在别人的基础上面改的.

import os.path

from openpyxl import load_workbook
from utils.log import Logger

# 加载存在的 excel 文件: 默认可读写
class ExcelReader():
    def __init__(self):
        self.cur_file = ""
        self.cur_sheet = ""
        self.log = Logger()
        self.basic_init()
        pass

    def basic_init(self):
        self.log.log_file_name = "excel_reader"

    def update_file_name(self, excel_file_name):
        self.cur_file = excel_file_name

    def update_sheet_name(self, sheet_name):
        self.cur_sheet = sheet_name

    def get_sheet_all_data(self):
        """
        根据Excel文件名,sheet名读取信息
        :return: 以矩阵的方式返回二维列表
        """
        try:
            wb = load_workbook(self.cur_file, read_only=True)
        except:
            self.log.error("文件不存在, " + self.cur_file)
            return None

        try:
            ws = wb[self.cur_sheet]
        except:
            self.log.error("所要读取的标签页不存在, " + self.cur_sheet)
            return None

        data = []
        for i in range(1, ws.max_row + 1):
            data.append([])
            for j in range(1, ws.max_column + 1):
                data[i - 1].append(ws.cell(row=i, column=j).value)
        return data

    def get_sheet_data_by_file_and_sheet_name(self, excel_file_name, sheet_name="Sheet1"):
        self.update_file_name(excel_file_name)
        self.update_sheet_name(sheet_name)
        return self.get_sheet_all_data()


    def get_sheet_basic_info(self):
        """
        :return: 最大行数,最大列数
        """
        pass

rd_excel = r"E:\代码空间\auto_test_framework\test_file\测试用例数据.xlsx"
rd_sheet = "Sheet1"
excel = ExcelReader()
data = excel.get_sheet_data_by_file_and_sheet_name(rd_excel, rd_sheet)
print("data", data)

    #功能规划
    #掺入文件名,返回该文件的基本信息,包括标签页,以及每个标签页的最大行数和最大列数
    #传入文件路径,标签页名称,返回


# 版权声明:本文为CSDN博主「魔小明」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/David_Dai_1108/article/detaimd
# ls/78702032

这个函数还算简单,主要转入文件名和标签页的名称就可以了,如果要读取其他文件或者sheet 页的时候,直接通过接口函数去更新就行.后面的四行是哪个使用的实例

然后下面是用例,用例中使用了subtest,也就是子测试的意思,这个东西的使用场景就是,在一个用例或者测试场景中,想要尽可能的多测试几个数据,这个时候就可以用得上了.上代码.

import os
import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from utils.config import *
from baseCase.base_case import BaseCase
from utils.excel_reader import ExcelReader

class TestBaiDu(BaseCase):
    URL = Config().get('URL')


    locator_kw = (By.ID, 'kw')
    locator_su = (By.ID, 'su')
    locator_result = (By.XPATH, '//div[contains(@class, "result")]/h3/a')

    # rd_excel = r"E:\代码空间\auto_test_framework\test_file\测试用例数据.xlsx"




    def sub_setUp(self):
        self.driver = webdriver.Chrome(executable_path=self.driver_path)
        self.driver.get(self.URL)

    def sub_tearDown(self):
        self.driver.quit()

    def test_search(self):
        rd_excel = DATA_PATH + '/测试用例数据.xlsx'
        rd_sheet = "Sheet1"
        excel = ExcelReader()
        datas = excel.get_sheet_data_by_file_and_sheet_name(rd_excel, rd_sheet)[0]
        print("datas", datas)
        for d in datas:
            with self.subTest(data=d):
                self.sub_setUp()
                self.driver.find_element(*self.locator_kw).send_keys(d)
                self.driver.find_element(*self.locator_su).click()
                time.sleep(2)
                links = self.driver.find_elements(*self.locator_result)
                for link in links:
                    self.log.info(link.text)
                self.sub_tearDown()


if __name__ == '__main__':
    unittest.main(verbosity=2)
# 版权声明:本文为CSDN博主「huilan_same」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/huilan_same/article/details/76572428

我觉得读取excel中的数据还是主要用来举例,实际使用的时候,可以直接将测试数据写在用来中,这样子会比较直观,当然尽可能的使用那个字典这种比较直观的方式就好啦!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 23:07:00  更:2022-04-07 23:07:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:00:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码