前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python自动化试题仓

Python自动化试题仓

作者头像
测试小兵
发布2020-08-05 14:45:36
8900
发布2020-08-05 14:45:36
举报
文章被收录于专栏:猪圈子猪圈子

试题/试题,一窝蜂要试题!是佛脚抱不了了,还是现在机会太多,另寻高就,升职加薪? 据我所知测试岗现在是竞争越来越大、要求越来越高,坑位越来越少,这三越击打着不少测试同仁们的内心吧!那些被培训机构口中的三高(薪资高、发展广、职位空缺多)忽悠转行加入的小白,现在是不是一脸懵逼?深刻上一课,没办法只能继续加油,继续折腾;怎么样?来道试题菜提升提升?

01

面试引言

# -*-coding=utf-8-*-
# anthou:石超

  聊聊为什么选择Python
- 为什么学习Python?
- 通过什么途径学习的Python?

: )

02

Python自动化试题

# -*-coding=utf-8-*-
# anthou:石超

unittest相关
1、unittest怎么实现结果的对比?

2、setup和teardown有什么用?

http相关
3、看过http的请求内容吗?都包含什么?Cookie一般放在哪?平时怎么抓包?

4、知道urllib吗?有没有更优的选择?

json相关
5、json和python的字典有什么区别呢?

5.1、网络传输需求格式为json,你在python中写的是字典,这时候怎么办呢?

5.2、清楚json.loads与json.dumps的区别吗?

6、有遇到过这种情况吗:在函数的内部引用了外部(非全局)作用域的变量。这种情况最著名的应用是什么?

考察面向对象相关:
7、有用过类的一些魔法方法吗?用过哪些?都有什么用?

8、类的实例化方法第一个参数是什么?必须是这个单词吗?意义是什么?有没有可能第一个参数是其他的或者没有?什么情况下会出现这种情况?

考察多线程相关:
9、Python能否利用多核cpu的优势?为什么?

10、Python多线程更适合什么场景?

11、thread和threading,推荐使用threading模块,原因如下:

11.1join()的作用是:

12、Python多线程需要锁吗?有GIL在,则某一时刻只能有一条线程运行,不会有多条线程同时修改数据的情况产生,那为什么还要加锁?


 总结:试题只是为了测试自己的技术相关知识点,面试过程更多要将自己的想法与技术结合哈,没有想法的测试/开发基本犹如一个绞肉机,毫无感情思想而言


: )

03

经典试题

# -*-coding=utf-8-*-
# anthou:石超

1、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?

2、如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?

3、一行代码实现删除列表中重复的值 ?

4、如何生成一个随机数?

5、如何使用python删除一个文件?

6、一行代码实现9*9乘法表

7、1、2、3、4、5 能组成多少个互不相同且无重复的三位数


: )

04

Python自动化试题习题+答案

# -*-coding=utf-8-*-
# anthou:石超


unittest相关
1、unittest怎么实现结果的对比?
  通过断言,unittest常用的断言有assertrqual、assertnotequal等等

2、setup和teardown有什么用?
  1).setup是测试前的准备工作,每条用例代码执行前都会先执行一次setup。
  2) .Teardown是测试结束后的清理

http相关
3、看过http的请求内容吗?都包含什么?Cookie一般放在哪?平时怎么抓包?
  1).包含url,请求方法,状态码,请求头,请求体
  2).Cooike一般放在请求头
  3).Web可以用谷歌控制台抓,手机或者客户端程序可以用fidder等工具。

4、知道urllib吗?有没有更优的选择?
  1).urllib是python3的库,内置了一些操作http请求的方法。更优的选择是requests,python的第三方库,封装了urllib,更简洁易用。

json相关
5、json和python的字典有什么区别呢?
  1).json是一种数据传输的格式,字典是python内置的一种数据结构。python dict 单引号双引号均可,json强制规定双引号。json key value必须是字符串,python 字典的key,value是任何可哈希的对象
5.1、网络传输需求格式为json,你在python中写的是字典,这时候怎么办呢?
  1).用json库进行转换,json.loads和json.dumps
5.2、清楚json.loads与json.dumps的区别吗?
  1).json中的dumps方法是用来将特定格式的数据进行字符串化的操作,比如列表字典都可以进行字符串化操作然后写入json的file;而且如果是要写入json文件就必须要进行dumps操作;
  2).loads用来将字符型数据转换成原来的数据格式,诸如列表和字典,就是原本是什么格式就还原成什么格式。

6、有遇到过这种情况吗:在函数的内部引用了外部(非全局)作用域的变量。这种情况最著名的应用是什么?
  1).其实这就是闭包,最著名的应用是装饰器。自动化测试经常用到装饰器,比如在登录,打日志,输出时间等等情况

考察面向对象相关:
7、有用过类的一些魔法方法吗?用过哪些?都有什么用?
  1).以双下划线开头和结尾的方法是魔法方法。最常用的:__init__,用来初始化类。其他还很多,比如:__str__,__call__等等

8、类的实例化方法第一个参数是什么?必须是这个单词吗?意义是什么?有没有可能第一个参数是其他的或者没有?什么情况下会出现这种情况?
  1).类的实例化方法第一个参数是self,不一定非得是self,也可以是abcd,随意。
  2).意义是类自身实例化出的对象。
  3).也可能第一个参数是cls
  4).这种情况是类方法,需要加装饰器@classmethod,也可能没有,这种情况是静态方法,需要加装饰器@staticmethod

考察多线程相关:
9、Python能否利用多核cpu的优势?为什么?
  1).不能,因为python内置了全局解释器锁(GIL),同一时刻只能有一个线程在运行

10、Python多线程更适合什么场景?
  1).io密集型(如爬虫,文件操作,网络编程等)

11、thread和threading,推荐使用threading模块,原因如下:
  1).threading更先进,有更好的线程支持
  2).thread模块的同步原语很少,只有一个,threading很多
  3).thread模块对于进程何时退出没有控制。主线程结束,子线程随即强制结束。thread不支持守护线程。
11.1join()的作用是:
  1).在子线程完成运行之前,这个子线程的父线程将一直被阻塞,主线程会在所有非守护线程退出后退出。

12、Python多线程需要锁吗?有GIL在,则某一时刻只能有一条线程运行,不会有多条线程同时修改数据的情况产生,那为什么还要加锁?
  1).需要锁。因为很多操作不是原子操作。线程会在执行到100条字节码的时候切换。举例如下:
虽然两个线程A、B由于GIL锁的存在,不会同时执行。(假设A、B功能是对一个全局变量 m 进行+1)但是A由于时间片用完切回B之前的最后一步操作可能是读取m的值,记作m1.此时B执行读取m的值,m加一,写回m,此时m的值是m1+1.又切回A,A执行加一,写回m,而写回的值是多少呢?还是m1+1.


 总结:以上就是本期的内容,你学会了吗?如果有什么不懂得,请公众号搜索[小X聊测试],每周会定期更新测试相关的内容 下期内容提示: 下期内容主要针对面试时,一些需要注意的事项进行整理!!!!

05

经典习题+答案

# -*-coding=utf-8-*-
# anthou:石超

1、如何实现 “1,2,3” 变成 [‘1’,’2’,’3’] ?
s = '1,2,3'
li = s.split(',')  # 指定分隔符对字符串进行切片
print(li)   # ['1', '2', '3']

2、如何用一行代码生成[1,4,9,16,25,36,49,64,81,100] ?
li = [x**2 for x in range(1,11)]
print(li)   # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

3、一行代码实现删除列表中重复的值 ?
集合的主要作用是去重和关系运算.

li = [1,1,4,7,4,9,7,9,11]
new_li = list(set(li))
print(new_li)  # [1, 4, 7, 9, 11]

4、如何生成一个随机数?
random模块可以很容易生成随机数和随机字符串。

random.randint(1, 100)  # 1-100之间取一个随机数
random.randrange(1, 100)  # 1-100之间取一个随机数
randint&randrange区别:randint包含100,randrange不包含100!!!


string模块可以生成随机字符串

string.digits  # 数字字符串   '0123456789'
string.ascii_letters  # 字母字符串 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.ascii_lowercase  # 小写字母字符串  'abcdefghijklmnopqrstuvwxyz'
string.ascii_uppercase   # 大写字母字符串 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.punctuation   # 特殊字符  '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

5、如何使用python删除一个文件?
os.remove()    # 删除一个文件的方法

>>> os.remove('atm_shopmall.zip')
>>> os.listdir()
['.DS_Store', 'atm_shopmall', 'startMyPython3.0'] 

6、一行代码实现9*9乘法表
print("\n".join("\t".join(["%s*%s=%s" %(x,y,x*y) for y in range(1, x+1)]) for x in range(1, 10)))

7、1、2、3、4、5 能组成多少个互不相同且无重复的三位数
li = [1, 2, 3, 4, 5]
new_li = []

for i in li :
    for j in li:
        for m in li:
            if i != j and i != m and j != m:
                num_str = str(i)+str(j)+str(m)
                num = int(num_str)
                new_li.append(num)

new_set = set(new_li)
new_list = list(new_set)
new_list.sort()
print(new_list)
print(len(new_list))    # 60   5*4*3

: )

有什么好的试题以及Python相关学习资料欢迎分享

end

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python测试社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档