Python自动化测试(九)

# !/usr/bin/env python
# -*- coding:utf-8 -*-

# Python知识:
# 1、字典排序使用到的函数具体是哪个?举例说明
dict1 = {"name": "admin", "passwd": "123456"}
# sorted()对所有对象排序操作
print(sorted(dict1.items(), key=lambda key: key[0]))
# lambda()决定key/value进行排序

# 2、字符串格式化使用到的关键字是哪个,举例说明
# format()接受不限个参数,位置可以不按顺序
site1 = {"name": "admin", "passwd": "123456"}
print("用户名:{name},密码:{passwd}".format(**site1))

# 3、列表中append()与insert()的区别是什么?举例说明
# append()向列表末尾追加元素。list.append("value")
list1 = ['Python', 'C', 'Java']
list1.append('end')
print(list1)
# insert(位置,值)在指定位置插入指定的值
list1.insert(0, 'go')
print(list1)

# 4、列表与元组的区别是什么
# 元组是不可变的 不能修改,不可增加也不可删除
# 列表是可变的 可以增加,也可以把已有的对象删除


# 5、查看一个对象的类型关键字是什么?查看对象的内存地址关键字是什么
print(type(list1))
print(id(list1))

# 6、怎么获取字符串的索引信息
str1 = "asdfghjkl"
print(str1.index("d"))

# 7、举例说明列表推导式的使用
# [表达式 for 迭代变量 in 可迭代对象 if 条件表达式 ]
list2 = [item for item in range(10) if item > 4]
print(list2)


# 8、当元组只有一个对象的时候,需要注意什么?
# 元组中只有一个元素时,需要在元素后添加逗号。

# 9、怎么理解函数的返回值?
def func(a, b):
    num = a + b
    return num


print(func(a=2, b=3))
# 1、函数体中return语句有指定返回值时返回的就是其值
# 2、函数体中没有return语句时,运行结束会隐含返回None作为返回值,类型是NoneType,与return、return None等效

"""
10、怎么理解函数的动态参数
不确定参数类型的时候调用,仅输出对应值
*args 将所有的实参的位置参数聚合到一个元组,并将这个元组赋值给args
**kwargs 将所有的关键字实参作为字典的键值对聚合到一个字典,并赋值给kwargs
"""


def func(*args, **kwargs):
    print(args)
    print('args类型', type(args))
    print(kwargs)
    print('kwargs类型', type(kwargs))
    # 形式参数为空
    func()
    # 为list
    func(["Go"])
    # 为字典
    func(name='admin', password='123456')


# 11、字符串与列表之间的互相转换
str2 = "Python,go,Java,Net"
list_str = str2.split(',')
print(list_str)
print(type(list_str))
str_list = "|".join(list_str)
print(str_list)
print(type(str_list))

# 12、字符串的替换使用到的方法是?
dict2 = {"name": "admin", "passwd": "123456"}
for key, value in dict2.items():
    if "admin" == value:
        item = value.replace("admin", "asdfghjkl")
# replace()把字符串中的旧字符串替换成新字符串,如果指定第三个参数max,则替换不超过 max 次。
print(item)

"""
13、怎么理解is,in,==
is:比较的是两个对象的id值是否相等,也就是比较对象是否为同一个实例对象,是否指向同一个内存地址。
==:比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法。
in:是判断成员是否属于某个序列
"""
str3 = "asdfghjkl"
if str1 is str3:
    id(str3)==id(str1)
    print("两者是同一对象")
else:
    print("两者不是同一对象")
print(id(str3))
print(id(str1))
dict3 = {"name": "admin", "passwd": "123456"}
if dict1 == dict3:
    print("内容相等")
else:
    print("内容不相等")
print(id(dict1))
print(id(dict3))
str4 = "asd"
if str4 in str3:
    print("包含")
else:
    print("不包含")

# 14、使用os库编写一个文件的路径拼接
import os

base_dir = os.path.dirname(__file__)
print(base_dir)
filePath = os.path.join(base_dir, 'data', 'login.json')
with open(filePath, 'r') as f:
    print(f.read())

# 15、怎么理解序列化与反序列化
# 将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式的过程称为序列化;
# 称为反序列化把变量内容从序列化的对象重新读取到内存中。
import json

# 元组序列化
tuple1 = ("go", "Python")
tuple_str = json.dumps(tuple1)
print('对象:{0},数据类型:{1}'.format(tuple_str, type(tuple_str)))
# 元组反序列化
str_tuple = json.loads(tuple_str)
print('对象:{0},数据类型:{1}'.format(str_tuple, type(str_tuple)))

"""
16、举例说明文件的a,w,r的模式
r: 只读,若文件不存在,报错;
w: 只写,若文件不存在,创建,覆盖
a: 只写,若文件不存在,创建,追加写
"""
data_dir = os.path.dirname(__file__)
print(data_dir)
filePath = os.path.join(data_dir, 'data', 'login.json')
with open(filePath, 'r') as r:
    print(r.read())

filePath = os.path.join(data_dir, 'data', 'login.json')
with open(filePath, 'w') as w:
    print(w.write("第一次\n"))

filePath = os.path.join(data_dir, 'data', 'login.json')
with open(filePath, 'a') as a:
    print(a.write("第二次"))


# 17、使用with上下文的模式来处理文件
def filew():
    with open('log.txt', 'w') as f:
        f.write('hi,go')


if __name__ == '__main__':
    filew()

# 18、怎么理解编码与解码
name = "admin"

str_byte = name.encode("utf-8")
# encode()编码:就是把str的数据类型转为bytes的数据类型的过程
print(str_byte)

byte_str = str_byte.decode("utf-8")
# decode():把bytes的数据类型转为str的数据类型的过程
print(byte_str)

# 19、使用datetime获取当前的时间
import datetime
import time

print('获取当前时间', datetime.datetime.now())
# 场景:遇到时间戳,怎么把时间戳转为标准时间格式

# 20、使用time等待5秒的时间
time.sleep(5)

"""
21、怎么理解装饰器
对重复代码进行精简
Def xx1(被装饰函数):
   def xx2(如果被装饰函数有参数那么输入):
          xxxxxxxxxxxxxxx
          被装饰函数(如果被装饰函数有参数那么输入)
          xxxxxxxxxxxxxxx
          如果被装饰函数中含有reture则需要返回被装饰函数
          没有则不需要
       reture xx2
"""


def outer(func):
    def inner(name):
        print("log")
        return func(name)

    # inner是inner()函数的对象
    # inner赋值给了fun1
    return inner


@outer
# 被装饰的函数
def func1(name):
    print("a")


func1(name="hello Python")

"""
22、怎么理解局部变量与全局变量
局部变量:函数内部定义时默认局部变量;定义时不分配,使用时分配,使用完释放
全局变量:直到程序结束后释放
在函数内部的局部变量高于全局变量
在函数内部使用全局变量的时候,可以使用关键字global来申明
"""
name = "123"


def func():
    name = "456"
    # 函数内部变量
    print(name)


print(name)
func()

"""
Linux知识:
1、查看进程的命令
ps

2、查看端口的命令
losf -i:端口

3、赋予文件权限的关键字
chmod {u|g|o|a}{+|-|=}{r|w|x} filename
u (user) 表示用户本人。
g (group) 表示同组用户。
o (oher) 表示其他用户。
a (all) 表示所有用户。
+ 用于给予指定用户的许可权限。
- 用于取消指定用户的许可权限。
= 将所许可的权限赋给文件。
r (read) 读许可,表示可以拷贝该文件或目录的内容。
w (write) 写许可,表示可以修改该文件或目录的内容。
x (execute)执行许可,表示可以执行该文件或进入目录。

4、r,w,x对应的数字是多少
r 读/4  w 写/2  x 执行/1

5、给一个文件给rwx权限
chmod 777 log.txt

6、git提交文件的命令是什么
git add [文件]

7、git创建仓库的命令是什么
git init

8、查看内存的命令
df -h

9、编辑文件的步骤
vim log.txt

10、查看文件前5行的命令
head -n 5 log.txt

11、查看文件后10行的命令
tail -n 10 log.txt

12、文件查看命令
正序查看⽂件内容 cat
倒序查看⽂件内容 tac
⼀屏⼀屏查看⽂件内容 more
查看⽂件内容 less(⽀持使⽤⽅向键翻⻚)

13、平均负载怎么查看
uptime
"""

 

 

 

 

posted @ 2021-07-24 15:33  星德川  阅读(67)  评论(0)    收藏  举报