8. 命令行参数与unpack
乙醇 创建于 about 7 years 之前
最后更新: less than a minute 之前
阅读数: 300
背景
我们先稍微的修改一下上一节的用例生成器,加入接收命令行参数的功能。
作为测试用例的执行者,我们希望在创建用例的时候可以指定用例编号,以便能够更加系统的管理测试用例。
代码实现
新建名为gen_test_case_with_id.py
,内容如下
from sys import argv
script, case_id = argv
print(f"创建测试用例\n用例编号: {case_id}")
case_name = input("请输入用例名称:\n")
test_data = input("请输入用到的测试数据,比如: 测试站点=www.itest.info:\n")
test_steps = input("请输入测试步骤:\n")
test_assert = input("请输入测试断言(预期结果):\n")
formatter = """
用例编号: {}
用例名称: {}
测试数据: {}
测试步骤: {}
测试断言: {}
"""
print(formatter.format(case_id, case_name, test_data, test_steps, test_assert))
运行
在命令行中使用下面的命令去执行代码
$python gen_test_case_with_id.py itest_001
注意: 我们在脚本名称后面加上了itest_001,这就是我们指定的用例编号,千万不要忘记传入这个参数,否则代码将会报如下的错误
Traceback (most recent call last):
File "gen_test_case_with_id.py", line 3, in <module>
script, case_id = argv
ValueError: not enough values to unpack (expected 2, got 1)
你应该可以看到
按照下面展示的情况进行输入,如果没有出错的话,你应该可以看到命令行窗口显示如下的内容
创建测试用例
用例编号: itest_001
请输入用例名称:
登录成功
请输入用到的测试数据,比如: 测试站点=www.itest.info:
无
请输入测试步骤:
略
请输入测试断言(预期结果):
跳转到www.itest.info
用例编号: itest_001
用例名称: 登录成功
测试数据: 无
测试步骤: 略
测试断言: 跳转到www.itest.info
import
python给我们预置了很多常用的功能,这些功能以module的形式组织起来,使用import
关键字就可以把我们需要的内容导入进来,从而在脚本里使用。
上面的代码里,我们从sys module里导入了argv这个功能。
argv
argv的意思是argument variable,这是大多数编程语言里的标准概念。argv里保存了脚本运行时你传入的所有的命令行参数以及脚本名称。看下面的例子
python something.py first second third # argv = [something.py, first, second, third]
python something.py my_var # argv = [something.py, my_var]
python something.py # argv = [something.py]
所以argv里按顺序保存了脚本名称以及各个命令行参数。
注意:命令行参数是以空格分隔的
unpack
简单来说,unpack就是把一组数据按顺序的保存到变量里。看下面的例子
argv = ['something.py', 'first', 'second', 'third']
a, b, c, d = argv # a='something.py' b='first', c=second d='third'
argv = ['something.py', 'my_var']
script, the_var = argv # script='something.py' the_var='my_var'
上面的代码里script, case_id = argv
的作用就是把第1个命令行参数赋值给变量case_id
动手时间
- 试着不传任何命令行参数,看一下python会报什么错
- 多传几个命令行参数,试一下会有什么效果