0
点赞
收藏
分享

微信扫一扫

python+ddt+excel实现简单的重复性测试

拾光的Shelly 2022-04-14 阅读 64

在实际项目中,很多时候需要重复性测试而非一次性测试,大量的重复测试才能体现出自动化测试效率和价值。

以一个小案例演示一下‘如何运用DDT框架结合excel文件类型的测试数据来实现自动化测试’,测试场景是模拟添加用户登录。

项目文件结构如图所示:
在这里插入图片描述
测试数据文件testdata.xlsx的内容如图所示:
在这里插入图片描述
excel函数文件dataexcel.py内容如下,作用是提取测试数据并返回一个列表,而每个列表元素是一个字典对象。

# coding = utf-8

import xlrd


def readExcel(excelName, sheetName):
    wb = xlrd.open_workbook(excelName)
    sheet = wb.sheet_by_name(sheetName)
    # 读取第一行的数据
    row1 = sheet.row_values(0)

    data = []
    for row in range(1, sheet.nrows):
        data_dic = {}
        value_list = sheet.row_values(row)
        for col in range(sheet.ncols):
            data_dic[row1[col]] = value_list[col]

        data .append(data_dic)

    return data


if __name__ == '__main__':
    data = readExcel('testdata.xlsx', 'userInfo')
    print(data)

测试代码文件test.py的内容如下所示,通过这个脚本来实现循环测试,比较用户名字段与密码字段对应的字符串是否相同。如果不同,即测试失败,直到所有测试数据循环结束。

# coding = utf-8

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
import ddt
from dataexcel import readExcel

excelData = readExcel('testdata.xlsx', 'userInfo')
print(excelData)


@ddt.ddt
class test_se(unittest.TestCase):
    def setUp(self) -> None:
        print('开始测试啦')
        self.driver = webdriver.Chrome()
        self.driver.get('https://passport.ctrip.com/user/login?')

    @ddt.data(*excelData)
    def test_01(self, data):
        self.driver.find_element(By.ID, 'nloginname').send_keys(data['username'])
        self.driver.find_element(By.ID, 'npwd').send_keys(data['password'])
        print(data)
        self.assertEqual(data['username'], data['password'])

    def tearDown(self) -> None:
        self.driver.quit()
        print('测试结束啦')


if __name__ == '__main__':
    unittest.main()

测试结果:三次测试方法的执行都是失败的,因为期望值与实际值是不相等的。

举报

相关推荐

0 条评论