1创建字典。2将字典转换为列表。3.将列表进行排序。4输出排名的选手姓名与成绩
既然自动化测试是手工测试提升的一个必经之路,虽然自动化测试没有那么高大上,但也是必不可少的。那作为一个有理想的测试人员,应该如何去学习自动化测试呢?
(1) 准确定位自己,明确目标
有不少同学意识到了自动化测试的重要性,就去网上查询资料啊,或是报培训班学习啊,可是到最后越学越迷茫,处于会与不会之间,前路不知如何去走?这是什么原因呢?
这是因为你在学习自动化测试之前没有想明白几个问题:我的真实水平如何?如果学习一项新的技术或是语言,我愿意投入的精力是多少?从现在开始学习,三个月或是半年后应该达到什么目标?我了解现在业界的自动化测试类型或是体系吗?想好这些问题再去入手学习或培训,必定事半功倍。
(2) 全面了解,选好切入点
目前自动化测试方向大概有以下几个:
辅助测试脚本方向:以Shell,Python为主来简化重复的工作,过滤日志等;
接口自动化测试方向:Python+Unittest+HtmlTestRuner+Jenkins和Java+Httpclient+TestNG+Jenkins,当然还有很多其他二次开发的框架或工具,不过核心是一样的;
页面自动化方向,主要有Python+Webdrver+HtmlTestRunner+Jenkins,Java+Webdriver+TestNG+Jenkins,以
及其他的框架和工具;App自动化测试方向:以Robotium+Java+TestNG+Jenkins,
Appium+Java+TestNG+Jenkins,Appium+Python+HtmlTestRunner为主。
当然这里介绍的都是简单的,最基本的实现方案,作为入门学习比较合适。其他五花八门的二次开发的框架,包含众多功能的方案留待你以后提升。先从这几方面了解入手,选择一个语言体系,建议从接口自动化入后,然后再去学习页面和app。
(3) 步步为营,不要贪多
我们在提升自己的时候,发现有好多东西需要学习,于是就很着急,想同时学习很多东西,其实这并不好。学的太多容易产生混淆,而且不容易消化,你仔细调研一下就会发现,很多东西都是通着呢。代码架构,用例管理,执行策略,持续化集成思想都可以举一反三,关键是自己要动手真正实施起来,在公司现在的框架上写用例,不管你写多少,不了解整体结构都是没有用的。
(4) 抛弃工具,多用开源
业界好像从来不缺少自动化测试工具,QTP,RealobotFramework,LoadRunner等等,知名不知名的数不胜数。先不说这些工具效果如何,目前大公司是从来不用这些工具的,大家都使用开源的框架,工具进行定制化自己的测试方案。
所以刚刚学习自动化测试的时候,也不要依赖工具,使用开源Webdriver,Appium,Robotium等搭建自己的自动化测试工程。掌握一个整体的自动化工程工作原理,为以后搭建自己的自动化工程,工具,平台做准备。
不管你对自动化测试是爱,是恨,它都是从手工测试转为测试开发必经的阶段。可能你了解到自动测试没有用,实施起来维护成本高,执行效率低等负面信息,其实这不是自动化测试的问题。
要知道,它只是一个工具,一种测试方案,最终的效果还是由实施的人来决定的。在12,13年的时候,用Jenkins做持续化集成比较热门,接下来几年好像没有那么火了,但是近两年docker技术的出现,又使CI,CD变得火热起来。我们是不是应该端正对自动化测试的态度,明确什么才是你想要的,找准方法,不断提升自己呢?
如果说你在自动化测试工程师阶段还想往性能测试方面去进行发展,要求就会更多了,其实性能也是一种自动化。所以第一个你也必须要掌握一门编程语言,第二个语言脚本,第三个指标,第四个调优。
解答:
字典可以通过键值对的形式创建,如下所示:
# 创建空字典
my_dict = {}
# 创建包含元素的字典
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
字典可以通过转换为元组列表或者转换为键值对列表来转换为列表,如下所示:
# 转换为元组列表
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
my_list = list(my_dict.items()) # [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]
# 转换为键值对列表
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
my_list = [{'name': key, 'score': value} for key, value in my_dict.items()] # [{'name': 'key1', 'score': 'value1'}, {'name': 'key2', 'score': 'value2'}, {'name': 'key3', 'score': 'value3'}]
可以使用内置函数sorted()对列表进行排序,通过指定key参数来进行按字典中的值进行排序,如下所示:
# 对字典进行排序
my_dict = {'key1': 80, 'key2': 90, 'key3': 70}
my_list = [{'name': key, 'score': value} for key, value in my_dict.items()]
sorted_list = sorted(my_list, key=lambda x: x['score'], reverse=True)
# 输出排序结果
for index, item in enumerate(sorted_list):
print('第{}名: {}, {}'.format(index+1, item['name'], item['score']))
完整代码如下:
# 定义字典
my_dict = {'张三': 90, '李四': 80, '王五': 70}
# 转换为元组列表
my_list = list(my_dict.items())
# 转换为键值对列表
my_list = [{'name': key, 'score': value} for key, value in my_dict.items()]
# 对字典进行排序
sorted_list = sorted(my_list, key=lambda x: x['score'], reverse=True)
# 输出排序结果
for index, item in enumerate(sorted_list):
print('第{}名: {}, {}'.format(index+1, item['name'], item['score']))
# 创建字典
scores = {'Alice': 80, 'Bob': 70, 'Charlie': 90, 'David': 85}
# 将字典转换为列表
score_list = list(scores.items())
# 将列表排序
score_list.sort(key=lambda x: x[1], reverse=True)
# 输出排名的选手姓名与成绩
for i, (name, score) in enumerate(score_list):
print(f'{i+1}. {name}: {score}')