unittest(20)- 自动更新表格中的数据(3)

通过函数获取表格中的手机号

# 1. get_data.py

from tools import project_path
import pandas as pd

class GetData:
    Cookie = None
    AddTel = pd.read_excel(project_path.test_case_path, sheet_name="phone").iloc[0, 0]

# df = pd.read_excel(project_path.test_case_path, sheet_name="phone")
# print(df.iloc[0, 0])  # 获取phone表单中的A1单元格的值
# 2. do_excel.py

# 从表格中获取手机号,进行值的传递
from openpyxl import load_workbook
from tools.read_config import ReadConfig
from tools import project_path
from account_auto_incre_6.get_data import GetData

class DoExcel:
    @classmethod
    def get_data(cls, file):
        wb = load_workbook(file)
        # 读出来的配置项是字符串格式,需要转换成字典格式
        mode = eval(ReadConfig.get_config(project_path.case_config_path_auto_incre, "MODE", "mode"))

        # tel = getattr(GetData, "AddTel")  # 从GetData中拿到数据
        tel = cls.get_tel(project_path.test_case_path, "phone")
        test_data = []
        for key in mode:
            sheet = wb[key]  # 表单名
            if mode[key] == "all":
                for i in range(2, sheet.max_row+1):
                    row_data = {}
                    # 数值类型读出来还是数值,不用使用函数eval转换
                    row_data["case_id"] = sheet.cell(i, 1).value
                    row_data["url"] = sheet.cell(i, 2).value
                    row_data["method"] = sheet.cell(i, 3).value
                    # row_data["data"] = eval(sheet.cell(i, 4).value)
                    if sheet.cell(i, 4).value.find("${tel_1}") != -1:   # 表示在这个单元格的值中如果找到了${tel_1}字符串
                        row_data["data"] = sheet.cell(i, 4).value.replace("${tel_1}", str(tel))
                    elif sheet.cell(i, 4).value.find("${tel}") != -1:   # 如果找到${tel}
                        row_data["data"] = sheet.cell(i, 4).value.replace("${tel}", str(tel+1))  # 加1是因为要使用不同的手机号
                    else:  # 如果没有找到匹配的字符串
                        row_data["data"] = sheet.cell(i, 4).value
                    row_data["title"] = sheet.cell(i, 5).value
                    row_data["expected"] = sheet.cell(i, 6).value
                    row_data["sheet_name"] = key  # 为了写回测试结果时定位表单
                    test_data.append(row_data)
                    cls.update_tel(file, "phone", tel+2)  # 加2是因为测试用例中已经使用了2个手机号了
            else:
                for case_id in mode[key]:
                    row_data = {}
                    row_data["case_id"] = sheet.cell(case_id+1, 1).value  # 注意行号和case_id的关系
                    row_data["url"] = sheet.cell(case_id+1, 2).value
                    row_data["method"] = sheet.cell(case_id+1, 3).value
                    row_data["data"] = eval(sheet.cell(case_id+1, 4).value)
                    row_data["title"] = sheet.cell(case_id+1, 5).value
                    row_data["expected"] = sheet.cell(case_id+1, 6).value
                    row_data["sheet_name"] = key  # 为了写回测试结果时定位表单
                    test_data.append(row_data)
        return test_data

    def write_back(self, file, sheet, i, response, test_result):
        wb = load_workbook(file)
        sheet = wb[sheet]
        # 写入测试结果, value必须是数据或者字符串类型才能被写回,写入数据前必须关闭工作簿
        sheet.cell(i, 7).value = response
        sheet.cell(i, 8).value = test_result
        # 保存工作簿
        wb.save(file)

    @classmethod
    def update_tel(cls, file, sheet_name, tel):
        wb = load_workbook(file)
        sheet = wb[sheet_name]
        sheet.cell(2, 1).value = tel
        wb.save(file)

    # 不使用反射,写一个获取手机号的函数
    @classmethod
    def get_tel(cls, file, sheet_name):
        wb = load_workbook(file)
        sheet = wb[sheet_name]
        tel = sheet.cell(2,  1).value
        return tel

if __name__ == ‘__main__‘:
    test_data = DoExcel().get_data(project_path.test_case_path)
    print(test_data)
    print(len(test_data))  # 获取列表元素个数

配置文件如图:

测试数据如图:

原文地址:https://www.cnblogs.com/come202011/p/12232061.html

时间: 2024-10-14 04:37:58

unittest(20)- 自动更新表格中的数据(3)的相关文章

unittest(20)- 自动更新表格中数据(5)

# 1. get_data.py from tools import project_path import pandas as pd class GetData: Cookie = None AddTel = pd.read_excel(project_path.test_case_path, sheet_name="phone").iloc[0, 0] # df = pd.read_excel(project_path.test_case_path, sheet_name=&quo

unittest(20)- 自动更新表格中的测试数据(1)

# 直接给出第一个手机号,而不是从excel中取数据 from openpyxl import load_workbook from tools.read_config import ReadConfig from tools import project_path class DoExcel: def get_data(self, file): wb = load_workbook(file) # 读出来的配置项是字符串格式,需要转换成字典格式 mode = eval(ReadConfig.g

Extjs更新表格中的数据

通过Extjs的ajax框架从后台获取数据,然后填入表格的特定单元格 historyStore为含有属性Location的数据存储容器 Ext.getCmp("historyGrid")为获取id为historyGrid的Ext.grid.GridPanel数据表格 function getAjaxLocation(Lgt, Lat, Index) { Ext.Ajax.request({ method: "POST", timeout: 5 * 60 * 1000

GridCtrl学习笔记(2)寻找自动更新表格的最新数据并把其显示到当前窗口的方法

工程搭建好后,可以开始找方法了. 1.首先,建立一个按钮,每按一次,就可更新非当前格子的内容,这个很容易实现: void CGridControlTest02Dlg::OnBnClickedFillbox() { // TODO: Add your control notification handler code here GV_ITEM Item; Item.mask = GVIF_TEXT|GVIF_FORMAT; Item.row = 56; Item.col = 2; Item.nFo

mysql5.7基础 更新表格中某列为指定数据的 一行

镇场文:       学儒家经世致用,行佛家普度众生,修道家全生保真,悟易理象数通变.以科技光耀善法,成就一良心博客.______________________________________________________________________________________________________ Operating System:UbuntuKylin 16.04 LTS 64bitmysql: Ver 14.14 Distrib 5.7.17, for Linux (

Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)

写入: private void insertFile(HttpServletRequest request, HttpServletResponse response) throws IOException { String path_member = request.getParameter("path_member"); List list = this.insert("f:/tmp001.xls", "gs_sale_members");

js获取表格中的数据 以及 表格中checkbox选中一行数据

前言 不知道是不是大家也遇到过类似的表单,但我绝对是第一次见,如下图所示,表单中包含了表格. 上图中的表格数据是根据数据库中学生表而变化的,这增加了获取表中数据的复杂程度,这里仅仅是记录js如何获取数据传值到后端的办法,所以,仅以表格中张三.李四为例. 示例代码 html <div class="modal-body"> <form id="exam-score-add-form" class="smart-form">

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数

jQuery Ajax遍历表格,填充数据,将表格中的数据一条一条拼成Jason数组

$.ajax({ url: baseURL + "InvoiceSale/OnQuotaInvoiceSale", //点击核销单号时,点击核销时,交互的页面               type: "POST",                 data: JSON.stringify(createTable.resultData()),     //JSON传递整个表格数据,得到字符串数组               dataType: "json&q