##四、python
1. python数据类型有哪些
①Number(数字)
②String(字符串)
③List(列表)
④Tuple(元组)
⑤Set(集合)
⑥Dictionary(字典)
1)列表 VS 元组
第一: 列表的声明用中括号[],元组的声明用小括号(),并且元组只有一个元素的时候需要在后面加逗号
第二: 列表是可变的,元组是不可变的.元组一旦被定义,里面的元素和个数就不能改变
2)元组的使用场景
第一种:字符串格式化拼接
tuple1 = ("aaa",21,188)
print("%s 年龄是%d的身高是%d" % tuple1)
第二种:函数返回多个值
def demo():
return (1,2,3)
2. 函数是值传递还是引用传递
值传递和引用传递的区别如下所示: 函数参数进行值传递后,若形参的值发生改变,不会影响实参的值;
函数参数进行引用传递后,若形参的值发生改变,实参的值也会一同改变
其中,值传递:指的是实参类型为不可变类型(数字、字符串、元组);
引用传递(或叫地址传递):指的是实参类型为可变类型(列表,字典,集合);
4. 内置模块,基本用法
os, time, requests, xlrd, thread,pymysql,flask
5. json.dumps json.loads
json.dumps(zidian) //zifuchuan
json.loads(zifuchuan) //zidian
6. 代码中使用到哪些装饰器
fixture, paramtrize
7. 用的什么断言方法
![](https://upload-images.jianshu.io/upload_images/2913413-134612d7b09d0fe6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
8. 如何判断数据类型
type方法
9. 面向对象有哪三大特性:
**封装 继承 多态**
![](https://upload-images.jianshu.io/upload_images/2913413-9caae81f38ddf15b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##五、自动化接口测试框架
1. 自动化的基本流程
使用pytest+request+allure接口测试框架,实现excel维护测试用例,利用封装的请求调取相应的测试用例接口,获取配置文件中的环境变量,使用log进行日志记录,并生成allure测试报告,最后进行jenkins集成实现测试报告邮件发送
2. 接口测试的要点
![](https://upload-images.jianshu.io/upload_images/2913413-a7b8b426c86cef8b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3. 自动化是数据驱动,使用@pytest.mark.parametrize('参数名',list)实现参数化(参数化定义:相同的测试步骤,不同的测试数据)
4. 数据库获取最新数据方法:fetchall
5. 自动化接口测试的占比:已实现800多个testcase,占比80%(说明一共有1000左右),执行需要4分钟
6. 自动化代码包括哪些结构
![框架](https://upload-images.jianshu.io/upload_images/2913413-08b92d8a2af51336.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
7. python 三元运算符
if a>b ? 1 : 0
8. 自动化框架代码中,如何实现参数上下关联
使用函数返回值的思想来解决
9. pytest的特点
- 简单灵活,容易上手
- 支持参数化
- 支持接口自动化、UI自动化测试
- pytest具有很多第三方那个插件,并且可以自定义扩展
##六、request
1. requests.session()发送请求 和使用requests直接发送请求的区别
> 1.每次接口请求后获取到响应中的cookie,然后接下来的所有请求带上这个cookie
2.使用requests.session会话对象,保持登录状态,然后对接口进行操作的场景
2. get VS post
> 1.GET 请求的参数通过 URL 传送,而 POST 放在 Request Body 中
##七、jenkins
定时执行测试,生成测试报告,并邮件发送给相关人员
## 八、测试用例设计
1. 测试杯子
1)功能(正常流程和异常流程):容量
2)用户使用场景:喝水,水能不能被喝到
3)易用性: 防滑,烫手
4)美观性:杯子外观,图案设计
5)兼容性:能否装高温度的水,汽油等液体
6)可靠性:使用次数损坏
7)安全性:杯口是否给身体造成伤害
8)稳定性:长时间装水,是否会漏水
9)性能
##九、接口工具:postman
1. 环境变量书写格式:环境变量要以 “{{变量名}}” 的方式来引用
2. 传什么类型的数据:body、form-data、二进制文件
##十、linux
1. 常用的命令
> 创建文件:touch
删除文件:rm
查看当前路径:pwd
查看进程:ps -ef |grep 进程名称
杀掉进程:kill -9 进程号
查看日志: tail -f 1.log -n 300
修改权限:chmod(change mode)
压缩解压缩:tar
复制:cp(copy)
重命名或剪切:mv
2. 查看端口是否占用
netstat -anp |grep 端口号 //netstat -anp |grep 3306
3. 查看内存命令
free -m
4. 查看磁盘空间的使用情况
df -h
5. 忘记了某个命令怎么用,一般有以下两种方式
--help选项//ls --help
man 查找 //man cd
6. chmod 644
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限
##十一、mysql
1. 关系和非关系
2. mysql pg数据库
3. 数据库表的连接方式,说下左连接和右连接的区别
- 左连接
sql语句:select* from table_left(表名) left join table_right(表名) on table_left.id = table_right.id
左连接查询的结果包含左边的全部和右边满足条件的数据
![左连接](https://upload-images.jianshu.io/upload_images/2913413-2c48e71d59a32c13.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 右连接
sql语句:select* from table_left(表名) right join table_right(表名) on table_left.id = table_right.id
右连接查询的结果包含右边的全部和左边满足条件的数据
![右连接](https://upload-images.jianshu.io/upload_images/2913413-29c61d7257ae9250.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##十二、docker +k8s相关
1. docker容器化部署
docker是一个基于Go语言实现的应用容器引擎
> 可移植:让开发者可以打包他们的应用及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化.
沙箱机制:容器是完全使用沙盒机制,相互之间不会有任何接口.
启动快:docker是创建容器进程,而无需启动操作系统
2. docker命令
2.1 镜像制作指令
```
docker build -t 镜像名称:镜像版本 .
```
注意后面有个点,默认使用当前路径下的名为Dockerfile 的文件作为 Dockerfile
可以通过docker images查看是否构建镜像成功/确定镜像库地址
![image.png](https://upload-images.jianshu.io/upload_images/2913413-3e4e1231c9c5266e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2.2 镜像启动指令
```
docker run -d 镜像名称:镜像版本
```
2.3 容器查看
通过docker ps -a查看容器ID
![](https://upload-images.jianshu.io/upload_images/2913413-dcc6037290fd9ed5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2.4 进入容器:
```
docker exec -it 容器ID /bin/bash
```
2.5 [ 公有镜像仓库的python:3.8.5,推送到私有镜像仓库](https://www.jianshu.com/p/4ef58a584a43)
3. dockerfile命令
```
# 使用官方Python作为运行时父镜像
FROM python:2.7-slim
# 设置工作目录 /app
WORKDIR /app
#将当前目录内容复制到应用程序容器中
ADD . /app
#安装所有requirements.txt规定的的包
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# 当容器启动时运行app.py
CMD ["python", "app.py"]
```
1)add和copy的区别
ADD命令1、支持从一个远程地址复制文件。它将会从远程下载文件,并且复制到容器内部2、可以复制压缩的文件,并且自动地解压缩文件内容到指定的地址。但是这个特性只针对本地的压缩文件生效。COPY没有这两个特性
2)docker start 和docker run区别
docker start指定的是一个容器 docker run是利用镜像生成容器,并启动容器,而docker start是启动一个之前生成过的容器
4. k8s
4.1 k8s是
4.2 k8s常用命令
```
//查看实时日志日志
kubectl logs -f -n 19-tos tos-dataserver-6cd9c8d94b-p6sbg
//进入容器内部
kubectl exec -it -n 19-tos tos-consoleserver-5ddf95f497-xtrhz /bin/sh
```