想做Python自动化,这些Python常用知识你都掌握了吗?

2083 篇文章 51 订阅
1267 篇文章 21 订阅

在这里插入图片描述
想要学好python自动化测试,当然不可缺少的知识就是python基础知识,有不少同学python学了一遍又一遍,得不到实际运用,所以时间一长,基础知识慢慢还是归零,既浪费了时间又打消了自己的积极性。

从我们python接口自动化测试实战的一期学员说起,有同学看到代码里面的args及*kwargs非常困惑,这就是典型的基础知识没有掌握。

*args用来将参数打包成tuple给函数体调用

"""

*args的使用方法:

用来将参数打包成tuple给函数体调用

"""

# 举例1

def func1(*args):

print(args, type(args))

func1(1)

# 举例2

def func2(x, y,*args):

print(x, y, args)

func2(1,2,3,4,5)

执行结果:

D:\tttesting\workspace\venv\Scripts\python3.exe D:/tttesting/test.py

(1,)<class'tuple'>

12(3,4,5)

**kwargs打包关键字参数成dict给函数体调用

"""

**kwargs的使用方法:

打包关键字参数成dict给函数体调用

"""

# 举例1

def func3(**kwargs):

print(kwargs, type(kwargs))

func3(a=2)

# 举例2

def func4(**kwargs):

print(kwargs)

func4(a=1, b=2, c=3)

def func(arg,*args,**kwargs):

print(arg, args, kwargs)

func(6,7,8,9, a=1, b=2, c=3)

执行结果:

D:\tttesting\workspace\venv\Scripts\python3.exe D:/tttesting/test.py

{'a':2}<class'dict'>

{'a':1,'b':2,'c':3}

6(7,8,9){'a':1,'b':2,'c':3}

Process finished withexit code 0

如下部分内容摘自我们python接口自动化测试实战一期课程给学员新增的基础知识,你是否都已经掌握了呢?希望对你有所帮助。

# -*- coding:utf8 -*-

"""方法"""

# def common(name, value):

#     print("这是{}".format(name))

#     print(value)

#

#

# def study_data_type_v2():

#     common("字符", "欢迎光临1213abc")

#     common("列表", [1, "字符串", dict(name='tt', age=123), [1, 3, 4, 5, ], ])

#     print("还有其他有序数据类型:元祖、集合等")

#     common("字典", {"name": 'yyt', 'age': 12})

"""1. 简单数据结构"""

def study_data_type_v1():

print("我就是字符串")

print("下面是列表")

print([1,

"字符串",

           dict(name='tt', age=123),

[1,3,4,5,],

])# 这里加一个对象

print("还有其他有序数据类型:元祖、集合等")

print("下面是字典")

print({"name":'yyt',

'age':12}

)

"""2. 简单数据类型的操作"""

# region 字符串

str_a ="我喜欢"

str_b ="吃饭"

str_c ="睡觉"

test_1 ="这是一个组合"+"的字符串"# 字符串拼接 1

test_2 ="_".join([str_a, str_b, str_c])# 字符串拼接 2

test_2 = test_2.split("-")# 字符串分割

test_3 = str(test_2).replace("_","&&")# 字符串的替换

str_d ="字符串的判断"

bool_result = bool("判断"in str_d)

str_e ="字符串的遍历"

for i in str_e:

print(i)

for index, i in enumerate(str_e):

print("字符串中序号为{}的汉字是{}".format(index, i))

# endregion

# region 列表

list_a =[1,3,5,4]

list_b =["a","b","c"]

list_c =[1,1,1,1]

list_d =['d']

list_b.extend(list_d)# 两个列表合并

list_b[-1]='e'# 赋值

list_b.append('f')# 追加

split_list_1 = list_b[1:2]

split_list_2 = list_b[:2]

split_list_3 = list_b[1:]

# 判断

bool_result = bool("a"in list_b)

# 排序

list_a.sort(reverse=True)

# 遍历

for i in list_a:

print(i)

# endregion

# region字典

dict_a = dict(name='中国', age=19)

dict_b ={"name":"中国",

"age":19

}

dict_a['age']=20# 赋值

dict_a.update(sex='女')# 更新

# 判断

bool_result = bool("name"in dict_b)

keys = dict_a.keys()

# 遍历

for k, v in dict_a.items():

print("key:{key} value:{value}".format(key=k, value=v))

# endregion

list_e =[i*10for i in range(0,5)]# 推到式

""" 对象 """

classBaseObj(object):

    class_host ='http://www.class_dev.com'

def __init__(self,**kwargs):

"""origin doc"""

        self.host ="http://www.dev.com"

        self.db ="test"

# print("最最最常用的构造函数")

# self.update_value(**kwargs)

# def __repr__(self):

#     print("根据我的意思打印host:{}".format(self.host))

#     print(self.__dict__)

#

# def __enter__(self):

#     print("我正在连接{}的DB".format(self.db))

#

# def __exit__(self, exc_type, exc_val, exc_tb):

#     print("我需要关闭掉当前的{}连接".format(self.db))

# def set_doc(self, doc):

#     self.__doc__ = doc

#

# def doc(self):

#     return self.__doc__

#

# def update_value(self, **kwargs):

#     if kwargs:

#         for attribute_name in kwargs.keys():

#             setattr(self, attribute_name, kwargs.get(attribute_name))

#

def get_value(self, name, default=None):

"""

        获取对象的属性值

        :param name: 属性名

        :param default: 如果没有返回的默认值

        :return:

        """

        value = getattr(self, name, default)

if value isNone:

return default

else:

return value

#

# def clear_value(self):

#     for k, v in vars(self).items():

#         setattr(self, k, None)

# region 修改属性-例子: 统一修改接口访问host

print(BaseObj.class_host)

c =BaseObj()

# 修改类属性

BaseObj.class_host ='http://www.class_test.com'

a =BaseObj()

b =BaseObj()

print(a.class_host)

print(b.class_host)

print(c.class_host)# 这个地址会变改变吗?

# 修改对象a的属性

a.host ='http://www.test.com'

print(a.host)

print(b.host)

# 修改对象b的属性

b.host ='http://www.test.com'

print(a.host)

print(b.host)

# endregion

# region 放开上面对象中各种方法之后的效果你知道吗?

a =BaseObj()

b =BaseObj(name='兔子', age=19)

# endregion

# region 继承

classUserInfo(BaseObj):

def __init__(self,**kwargs):

        self.name ="狗子"

        self.age =1

        super(UserInfo, self).__init__(**kwargs)

def set_name(self, name):

        self.name = name

user_info =UserInfo(name="哈斯奇", db="dev")# 看看里面的属性

user_info.name ="泰迪"

user_info.set_name("吉娃娃")

name = user_info.get_value("name")

default_value = user_info.get_value("dddd","默认值")

# endregion

# region装饰器

import functools

def log(func):

@functools.wraps(func)

def wrapper(*args,**kwargs):

print('call %s():'% func.__name__)

print('args = {}'.format(*args))

return func(*args,**kwargs)

return wrapper

@log

def test(p):

print(test.__name__ +" param: "+ p)

test("I'm a param")

# endregion

以上内容希望对你能有所帮助。

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
在这里插入图片描述

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值