以读取excel文件中的测试数据,进行登录功能测试为例,遇到了一个问题,代码如下:
import unittest from funcs import login # 同一文件夹下,一个py文件导入另一个py文件的login函数 from excel import read_excel_dict
data = read_excel_dict("login.xlsx","Sheet1") print(data)
class TestLogin(unittest.TestCase):
def test_login(self):
for row in data: # 遍历列表元素:三个字典
params = row["data"] # 通过key获取字典row的value ,并赋值给params
username = params["username"] # 通过key 获取字典params的 "username" value值
password = params["password"] # 通过key 获取字典params的 "password" value值
expected = row["expected"] # 通过key获取字典row 的value,并赋值给expected :得到{"code": "300", "msg": "用户名或密码错误"}'
actual = login(username,password)
self.assertEqual(expected,actual)
运行代码报错:TypeError: string indices must be integers
在错误代码处打断点后得知,params是一个字符串非字典: "{"username": "", "password": ""}"
因此需要将字符串转换成字典类型,通过Python 内置函数 eval()可实现这一转换,修改后代码:
import unittest from funcs import login # 同一文件夹下,一个py文件导入另一个py文件的login函数 from excel import read_excel_dict data = read_excel_dict("login.xlsx","Sheet1") print(data)
class TestLogin(unittest.TestCase): def test_login(self): for row in data: # 遍历列表元素:三个字典 params_string = row["data"] params = eval(params_string) # 通过Python 内置函数 eval() 实现字符串转字典 username = params["username"] # 通过key 获取字典params的 "username" value值 password = params["password"] # 通过key 获取字典params的 "password" value值 expected = row["expected"] # 通过key获取字典row 的value,并赋值给expected :得到{"code": "300", "msg": "用户名或密码错误"}' actual = login(username,password) self.assertEqual(expected,actual)
运行通过