变量中间包含$符号的问题
问题描述
比如我有一个全局的变量, 它的值形如 a$b, runner.run(suite_path,mapping=mapping) 生成的mapping文件中含有a$b, 那么run就会报变量b找不到的错误。 说明:改成a$$b并不能解决问题,但是改成$$报错的时刻会不一样: 如果是a$b, 在parser mapping文件的时候就会报错。 改成a$$b, parser mapping文件的时候会按期望处理成a$b,但是在run case之前,还会parser一次case的信息, 这个时候由于a$$b已经变成a$b,再处理就会报错了。
版本信息
- 操作系统类型: [ Windows]
- Python 版本 [3.6]
- HttpRunner 版本 [2.2.6]
@shi053051 可否提供下报错的用例和堆栈日志?
@debugtalk 重现步骤: case file: [ { "config": { "name": "test", "variables": { }, "base_url": "http://www.baidu.com" } }, { "test": { "name": "step 1", "variables": { }, "validate": [ ], "request": { "url": "/", "method": "GET", "headers": {}, "verify": false } } } ]
config (csv): Env,URL,UserName,Password test,http://www.baidu.com,a$b,aaa
cli.py: from httprunner.api import HttpRunner import argparse import os import csv
currert_path = '.' Config_PATH = os.path.join(currert_path, 'config.csv')
def get_env_info(env = 'test'): try: with open(Config_PATH, newline='') as envFile: reader = csv.DictReader(envFile) for row in reader: if row['Env'] == env: return row except: print('get env info failed :%s' % Exception) parser = argparse.ArgumentParser() parser.add_argument("--env", default='test', help="specify the api running environment.") args = parser.parse_args() env = args.env
mapping = get_env_info(env) runner = HttpRunner(log_level='Debug') runner.run('testCase',mapping=mapping)
运行cli.py的报错信息:
Traceback (most recent call last):
File "C:/Users//BT/tools/Python3/test_httprunner/cli.py", line 25, in
说明: 改成a$$b,还是会报一样错, 只是traceback信息会有些不同。
今天也遇到了这个问题,看了下源码,发现httprunner默认将含$的字符串(如$b),识别为调用变量b,暂时的办法是不在变量值里包含$.
不在变量值里包含$. 是把$直接去掉了吗