13.1列表推导式
# 请用列表推导式实现,根据一个列表生成一个新的列表
# 根据某种规则:求平方
# 一行代码实现
list1 = [1,2,3,4,5,6]
list2 = []
# for i in list1:
# print(i)
# r = i * i
# list2.append(r)
# print(list2)
# 用map函数也可以实现
result = map(lambda x:x*x,list1)
print(list(result))
# 列表推导式实现
result = [i * i for i in list1]
print(result)
result = [i **3 for i in list1]
# 最终只返回大于60 的数字,补充i不是返回的结果,i是列表中的元素
result = [i **3 for i in list1 if i > 60]
print(result)
result = [i **3 for i in list1 if i**3 > 60]
print(result)
# 只计算大于3的数字即可
result = [i **3 for i in list1 if i > 3]
print(result)
13.2 冒泡排序法
# 使用冒泡排序法将以下列表中的元素从小到大进行排序
list1 = [5,3,2,10,15,13]
# 冒泡排序法实现思路:两个相邻的数字进行比较,大的向上浮,小的向下沉,最后一个元素是最大的
"""
从左往右依次相邻比较:共循环5轮;比较15次
第一轮循环
1、比较5和3,5>3(交换位置)
[3,5,2,10,15,13]
2、比较5和2,5>2(交换位置)
[3,2,5,10,15,13]
3、比较5和10,5<10(位置不动)
[3,2,5,10,15,13]
4、比较10和15,10<15(位置不动)
[3,2,5,10,15,13]
5、比较15和13,15>13(交换位置)
[3,2,5,10,13,15]
最大值已被确认:15
第二轮循环
.......................................................
13被确认
第三轮循环
.......................................................
10被确认
第四轮循环
......................................................
5被确认
第五轮循环
......................................................
3被确认
(2已经没有需要比较的相邻值了;所以2被确认最小)
"""
def bubble_sort(blist):
list_len = len(blist)
print("传入的参数列表长度是{}".format(list_len))
# 如何获取到相邻的两个元素
# 外层循环就是控制循环次数的
for i in range(0,list_len-1):
print("--------------第{}轮开始排序------------".format(i+1))
for j in range(list_len -1 -i):# 减个i是减少排序次数
print("此时的列表的形状是{}".format(blist))
print("此时我们要排序的元素是{}和{}".format(blist[j],blist[j+1]))
# 排序,交换位置
if blist[j]> blist[j+1]:
blist[j],blist[j+1] = blist[j+1],blist[j]
print("排序后的列表的形状是{}".format(blist))
print("==============第{}轮排序结束===========".format(i+1))
bubble_sort(list1)
13.3 快速排序法
# 请使用快速排序法实现以下列表的从小到大排序
list1 = [5,3,2,10,15,13]
"""
核心思想
1、从列表中取出任意一个元素,但是我们一般取第一个
2、把这个取出来的元素作为比较的标准
3、把比这个元素小的放在左边
4、把比这个元素大的放在右边
"""
#
# def quick_sort(quick_list):
# print("现在的列表是:{}".format(quick_list))
#
# if quick_list == []:
# print("-----寻找结束,此时列表为空-----")
# return []
#
# first = quick_list[0]
# # 使用列表推导式加上递归实现
# print("开始寻找比第一个元素《《小》》的元素,第一个元素是{}".format(first))
# less = quick_sort([l for l in quick_list[1:] if l < first])
#
# print("开始寻找比第一个元素《《大》》的元素,第一个元素是{}".format(first))
# more = quick_sort([m for m in quick_list[1:] if m >= first])
#
# print("**********此时返回的列表是{}**********".format(less+[first]+more))
# return less + [first] + more
#
# print(quick_sort(list1))
# 快速排序法最简单的写法
def quick_sort(quick_list):
if quick_list == []:
return []
less = quick_sort([l for l in quick_list[1:] if l < quick_list[0]])
more = quick_sort([l for l in quick_list[1:] if l >= quick_list[0]])
return less + [quick_list[0]] + more
13.4 Python面向对象
-
你是如何理解面向对象的?
- 面向对象是一种编程思想
- 面向对象的三大特点:
- 封装{面向对象的基本应用:类中的属性(私有、公有)、方法(类方法、静态方法、一般方法、私有方法、构造方法)}
- 继承{继承有单继承、多继承}
- 多态{多态指多种形态、不同类对象针对同一消息做出不同响应}
-
类中私有变量能否访问
- 当然可以访问,但是我们写代码时不建议这样做
- 使用类__dict__属性可以查看到类中被重命名的私有属性和方法
其中格式为_类名+私有属性名或私有方法名
13.5 Web自动化测试中的验证码问题
- 验证码的分类:
- 文字验证码、数字验证码、动验证码、计算题验证码、顺序点击验证码、图形识别验证码、短信验证码
- 解决验证码思路:
- 关闭验证码:由开发人员解决
- 万能验证码:开发人员设置
- 绕过验证码:在测试代码中添加cookie,保持登录状态
13.6 如何管理自动化测试用例
- 自动化测试中如何管理测试用例?
- 根据项目规模进行管理{1、小项目用excl,大项目放在数据库中(讲究的是规范与共享)}
- 项目之初有频繁的更改,采用excl更加的灵活;项目迭代比较稳定,采用数据库中;项目稳定后也采用数据库存储。
13.7 什么时候开展自动化测试
- 项目中什么时候开展自动化测试?
- 项目运行版本相对比较稳定的时候;
- 从项目流程看自动化测试执行的环节:立项——文档——代码编写——单元测试——冒烟测试(准入测试)——功能测试——项目集成——集成冒烟测试(准入测试)——集成功能测试——上线部署——回归测试;其中冒烟测试、集成冒烟测试、回归测试都可以进行自动化测试。