06 2020 档案

摘要:项目健壮性提高 path参数化 import os # 获取项目所在的绝对路径 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 用例模块所在的目录路径 CASE_DIR = os.path.join(B 阅读全文
posted @ 2020-06-26 12:14 呓语落花 阅读(193) 评论(0) 推荐(0)
摘要:python 操作数据库 import pymysql # 第一步:连接到数据库 conn = pymysql.connect(host="120.78.128.25", port=3306, user="future", password="123456", charset="utf8", cur 阅读全文
posted @ 2020-06-26 12:13 呓语落花 阅读(901) 评论(0) 推荐(0)
摘要:# 第一步:准备请求的相关数据 # 接口地址 url = "http://api.lemonban.com/futureloan/member/register" # 第二部, 准备请求的参数 data = { "mobile_phone": "18189098765", "pwd": "lemon 阅读全文
posted @ 2020-06-26 12:11 呓语落花 阅读(256) 评论(0) 推荐(0)
摘要:配置模块的引入 需求背景: 进行自动化测试的时候会有很多的设置常量需要操作。 比如 baseurl,db连接数据,测试用用户名,管理员账号,token,auth之类 比较好的方式是使用一个静态文件保存下来,编写方法固定读取 涉及第三方库 configparser.ConfigParser step1 阅读全文
posted @ 2020-06-26 12:09 呓语落花 阅读(306) 评论(0) 推荐(0)
摘要:封装excel操作代码,提高复用率 整体封装思想阐述: 表内用例格式构建 表头,case_id,title,data,expected 表体,测试用例数据 首先获取表体第一行的数据组成的列表 之后获取由二行开始的所有数据, 之后逐条将表头与数据zip封包,之后转换为字典。 注意点: 从excel中读 阅读全文
posted @ 2020-06-26 12:08 呓语落花 阅读(282) 评论(0) 推荐(0)
摘要:1 @ddt 2 class RegisterTestCase(unittest.TestCase): 3 cases = [ 4 {"title": "注册成功", "excepted": {"code": 1, "msg": "注册成功"}, "data": ['python1', '12345 阅读全文
posted @ 2020-06-26 12:06 呓语落花 阅读(191) 评论(0) 推荐(0)
摘要:unittest测试用例类的写法 定义测试用例类: 用例类必须继承于unittest.TestCase 定义测试用例: 在测试用例类中,每一个以test开头的方法就是一条用例 unittest中测试用例执行顺序 根据方法名按照ASCII码进行排序的 unittest中会自动根据用例方法执行的时候,是 阅读全文
posted @ 2020-06-26 12:03 呓语落花 阅读(459) 评论(0) 推荐(0)
摘要:po设计思想 1,什么是po pageobject是一种涉及模式 减少冗余的代码和对代码进行管理 分离测试步骤及测试对象 2,po的好处 提高代码复用率 集中管理定位信息,提高可维护行, 代码可复用,降低成本, 不同po之间没有交叉,可团队并行开发 po设计原则 1,总的原则 封装basepage, 阅读全文
posted @ 2020-06-26 12:02 呓语落花 阅读(1428) 评论(0) 推荐(0)
摘要:键盘操作 导包 from selenium.webdriver.common.keys import Keys 对应属性以及调用 Keys.BACK_SPACE:回退键(BackSpace) Keys.TAB:制表键(Tab) Keys.ENTER:回车键(Enter) Keys.SHIFT:大小写 阅读全文
posted @ 2020-06-26 12:01 呓语落花 阅读(422) 评论(0) 推荐(0)
摘要:页面元素的属性 tag_name 标签名 print(ele.tag_name) text 文本内容 parent 获取父级标签 页面元素的方法 get_attribute(属性名) 获取标签的属性 is_displayed() 判断元素是否可见 send_keys() 输入内容 click() 点 阅读全文
posted @ 2020-06-26 12:00 呓语落花 阅读(336) 评论(0) 推荐(0)
摘要:三大等待 强制等待 time.sleep() # 使用time模块强制进行等待,单位s 隐式等待 driver.implicitly_wait(30) # 等待元素直到超时报异常 显式等待 # 第一步:创建一个等待计时器对象 wait = WebDriverWait(driver, 30, 0.5) 阅读全文
posted @ 2020-06-26 11:59 呓语落花 阅读(233) 评论(0) 推荐(0)
摘要:了解iframe iframe是一种html封装,内嵌页面,方便相同功能的网页复用代码,可以一定程度上减少开发量 所以在测试一个大型web项目的时候,包含iframe标签就不稀奇,但是在切换frame之前去定位,操作frame中的元素都是无法实现的。 切换frame的方式 通过iframe的名字 d 阅读全文
posted @ 2020-06-26 11:57 呓语落花 阅读(1415) 评论(0) 推荐(0)
摘要:准备工作 安装selenium 准备对应版本的geckdriver.exe文件。 http://chromedriver.storage.googleapis.com/index.html 默认都是使用chorme浏览器,版本对应链接如上 chromedriver配置环境变量 如果没有配置chrom 阅读全文
posted @ 2020-06-26 11:56 呓语落花 阅读(448) 评论(0) 推荐(0)
摘要:jquery属性和元素操作 1 jquery 操作属性 2 attr("属性名") 拿到属性值或者键值对应设置属性 3 4 attr("属性名","要写入的值") # 属性写入 5 6 removeAttr("属性名") 从所有匹配的元素中移除指定的属性、 7 8 9 10 // 写入属性 11 1 阅读全文
posted @ 2020-06-26 11:34 呓语落花 阅读(412) 评论(0) 推荐(0)
摘要:变量 变量命名 可以使用短名称 比如 x y 也可以使用描述性更好的名称(推荐 变量必须以字母开头 变量也可以以 $ _符号开头,但不推荐 变量名称对大小写敏感 驼峰式命名法 变量声明 js中变量可以先声明后赋值 同时也可以同时给多个变量赋值 var a=10,b=11,c=22; 数据类型 数字类 阅读全文
posted @ 2020-06-26 11:25 呓语落花 阅读(284) 评论(0) 推荐(0)
摘要:1 # 前端学习 2 # html 决定架构 css 决定显示样式 js 决定交互、 3 # 前端,网站前台部分, 4 # HTML 超文本标记语言,是网页制作必备语言 5 # 1,HTML页面结构 6 ''' 7 超文本标记语言的机构包括 8 头部 head 主体 body 9 <html lan 阅读全文
posted @ 2020-06-26 10:01 呓语落花 阅读(146) 评论(0) 推荐(0)
摘要:生成器复习 在python中,使用了yield的函数被称为生成器(generator). 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单理解生成器就是一个迭代器. 在调用生成器运行的过程中,每次遇到yield时函数会餐厅并保存当前所有的运行信息,返回yield的值,并在下 阅读全文
posted @ 2020-06-22 10:04 呓语落花 阅读(164) 评论(0) 推荐(0)
摘要:什么是进程 参考任务管理器,所有任务都是进程 线程包含在进程之内。 一个程序运行起来后,代码 + 用到的资源称之为进程 它是操作系统分配资源的基本单元。 不仅可以通过线程完成多任务,进程同样也可以做到。 进程的状态 工作中,任务数往往大于cpu的核心数。即,一定会有一些任务在执行,而另一些在等待cp 阅读全文
posted @ 2020-06-22 09:37 呓语落花 阅读(166) 评论(0) 推荐(0)
摘要:多任务系统 多任务系统可以同时运行多个任务。 单核cpu也可以执行多任务,由于cpu执行代码都是顺序执行的,那么cpu是怎么执行多任务的? 答案是操作系统轮流让各个任务交替执行 任务1执行0.01s切换任务2,任务2执行0.01s切换任务3. 依次类推,表面上看,每个任务都是交替执行的,但是由于cp 阅读全文
posted @ 2020-06-20 06:55 呓语落花 阅读(1796) 评论(0) 推荐(0)
摘要:大小整数池子 小整数池 数据类型之可变/不可变。 可变的数据类型 list,dict,set 可变,就是里面的数据类型变了,指向内存没变 不可变的数据类型 str, 数值,tup元祖 不可变,如果改变了值,指向内存会发生改变,称不可变。 小整数池子 -5~256 只要是在这个区间范围内的数值是pyt 阅读全文
posted @ 2020-06-20 06:53 呓语落花 阅读(175) 评论(0) 推荐(0)
摘要:前情提要 getattr,gettrubte,setattr,delattr方法的触发时机 obj.__getattr__ 方法, 如果被访问(查找)的属性不存在的时候会触发 obj.__gettrbute__方法, 访问 查找属性时,第一时间出发该方法 obj.__setattr__方法 设置属性 阅读全文
posted @ 2020-06-20 06:52 呓语落花 阅读(160) 评论(0) 推荐(0)
摘要:一 、 自定义属性访问1.__getattr__ 作用:当我们访问属性的时候,如果属性不存在(出现AttrError),该方法会被触发。 2.__getattribute__ 作用:访问属性的时候,第一时间触发该方法去找属性。如果没找到触发AttrError 总结:当我们去访问一个不存在的属性时,首 阅读全文
posted @ 2020-06-20 06:50 呓语落花 阅读(271) 评论(0) 推荐(0)
摘要:前文课题 通过装饰器来实现单例模式 通过类实现一个通用装饰器,皆可以装饰函数也可装饰类,即可有参也可无参 描述 new str repr call 分别会在什么时候被触发 new 创建实例对象的时候 str print实例对象的时候,str处理对象的时候,format处理对象的时候 repr 调用r 阅读全文
posted @ 2020-06-20 06:49 呓语落花 阅读(164) 评论(0) 推荐(0)
摘要:回顾 一个完整的闭包函数要满足那些条件 1,函数里面套函数 2,外层函数返回的事内层函数的函数名 3,内层函数有对外部非全局变量的引用 多个装饰器并存 多个装饰器装饰同一个类,方法的时候,装饰器的加载和执行是什么样子的呢? 1 @login_check 2 @timer 3 def func(): 阅读全文
posted @ 2020-06-20 06:48 呓语落花 阅读(127) 评论(0) 推荐(0)
摘要:小 tips 写递归函数的章节提到过,当函数不断调用自身,直到被pycharm发现抛出异常。实际上是因为栈溢出。 什么是栈溢出呢? python中只要调用一个函数,函数中自己调用自己,每次调用都会放到内存中反复递归,但是当原函数没结束时(就是说没有设置递归结束标示),递归就不会结束,直到内存被用完, 阅读全文
posted @ 2020-06-20 06:47 呓语落花 阅读(112) 评论(0) 推荐(0)
摘要:函数进阶 递归函数 定义一个函数在函数的内部调用自身,如果不设置递归边界,将死循环无限调用知道被pycharm等ide观测到抛出异常终止 案例1: def fun(): if n == 0: return n else: return n*fun(n-1) # 在当前函数中,就是当n=0的时候停止调 阅读全文
posted @ 2020-06-20 06:45 呓语落花 阅读(257) 评论(0) 推荐(0)
摘要:元组和列表 1,元组与列表的性能分析 可以通过计算创建元组的时间与创建列表的时间相对比。 在此可以使用python的第三方库,ipython,timeit.timeit。 终端输入ipython即可进入交互式编程。通过timeit方法,执行命令并返回执行时间,从而得到python在初始化元组和列表, 阅读全文
posted @ 2020-06-17 15:37 呓语落花 阅读(299) 评论(0) 推荐(0)
摘要:工程结构化 时间层面,结构化意味着通过编写简介的代码并且正如文件系统中文件和目录的组织一样,代码应该逻辑和依赖清晰,在一个健康的开发周期中,代码风格,api涉及,和自动化是非常关键的,同样对于工程架构,仓库的架构也是关键的一部分。 那么什么是仓库的结构呢? 当你在Git上狩猎的时候,你能看到很多优秀 阅读全文
posted @ 2020-06-17 13:59 呓语落花 阅读(127) 评论(0) 推荐(0)
摘要:一,虚拟环境主要目的是为了给不同的工程创建相互独立的运行环境 在虚拟环境下,每一个工程都有自己的依赖包,彼此独立与其他的环境无关。 引入virtualenv 1,pip install 安装virtualenv 2,pip安装虚拟环境管理包 virtualenvwrapper-win 3,在本地硬盘 阅读全文
posted @ 2020-06-17 13:47 呓语落花 阅读(89) 评论(0) 推荐(0)