字符串转字典

以读取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)

 运行通过

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值