def

pyqt5的简单进度条程序

为君一笑 提交于 2021-02-11 12:46:11
# -*- coding: utf-8 -*- # @Author : FELIX # @Date : 2018/5/17 16:43 from PyQt5.QtCore import QBasicTimer from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton from PyQt5.QtGui import QIcon import sys class MyQt(QWidget): def __init__ (self): super(MyQt, self). __init__ () self.initUI() def initUI(self): # 构建一个进度条 self.pbar = QProgressBar(self) # 从左上角30-50的界面,显示一个200*25的界面 self.pbar.setGeometry(30, 50, 200, 25) # 设置进度条的位置 # 设置开始按钮 self.btn = QPushButton( ' 开始 ' , self) self.btn.move( 50, 90) # 按钮移动的位置 # 点击按钮 # 信号函数不能加括号 self.btn.clicked.connect(self.doAction) # 构建一个计时器

python接口自动化(二十三)--unittest断言——上(详解)

丶灬走出姿态 提交于 2021-02-11 06:46:34
简介   在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。用 unittest 组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断 言方法:assertEqual、assertIn、assertTrue。想了解更多可以点击 传送门 看一下最后的小结有大致介绍。   unittest断言计划是分上、中、下三篇有简单到复杂的给小伙伴们介绍一下,填补一下这部分的空白。 基本断言方法 基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。 序号 断言方法 断言描述 1 assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail 2 assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2, 相等则fail 3 assertTrue(expr, msg=None) 验证expr是true,如果为false,则fail 4 assertFalse(expr,msg=None) 验证expr是false,如果为true,则fail 5 assertIs(arg1, arg2, msg=None)

bazel简介(二)——从makefile向bazel转变(使用genrule)

南笙酒味 提交于 2021-02-11 04:48:49
0x01 背景 上篇中已经介绍了bazel的基本工作原理和相关的概念。这篇将继续介绍下,现有的makefile构建工程如何切换到bazel构建系统。 bazel提供了丰富的扩展方式,当然也支持从目前的makefile过渡到bazel构建。 再次说明下其特性: 多语言支持,并且支持扩展到任何语言的构建。 扩展DSL是starlyke语言,为Python的一个子集,容易上手。这一点是cmake和其他构建系统不具备的。 支持缓存。 支持分布式构建。 支持最小化构建。 在一个大型系统中,一个人可能只需要负责其中的一个小组件,这个组件可能又依赖其他组件。当这个组件需要更新测试时,只希望去构建这个组件依赖的组件和这个组件本身,其他不相关的可以不构建,这样可以使用构建过程更快捷。bazel就支持这种方式。 0x02 makefile的问题 上文中说过makefile在处理小规模软件时还不错,当规模增大时,makefile有以下问题。 各个组件之间的依赖难以管理。 makefile只支持将所有的源码放在一个目录下,然后由顶层的。 这个依赖关系只能是有经验的人知道,新人想最小化编译时,只能试错,发现有依赖未构建时,再去手动构建。 增量式构建难以控制。 这一点和第1点是相关的,因为依赖不能自动化构建,所以增量式构建也不具备。 构建速度不足,难以做缓存。 makefile本身不支持缓存

《一头扎进》系列之Python+Selenium自动化测试框架实战篇6

拜拜、爱过 提交于 2021-02-11 01:46:20
1. 简介   本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去、用addTest()方法来加载我们测试用例到suite中去和利用discover()方法去加载一个路径下所有的测试用例。 2. addTest()方法   这里首先介绍unittest下addTest()方法来加载测试用例到测试套件中去。为了演示效果,我在前面文章的脚本基础上,新建了一个测试脚本,这个测试脚本有一个测试用例,加上前面的测试脚本,一共就是三个测试用例,前面那个测试类里面包括两个测试用例。 新建的测试脚本,test_get_page_title.py代码如下: 2.1 代码实现: 2.2 参考代码: # -*- coding:utf-8 -*- # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-12-24 @author: 北京-宏哥 QQ交流群:705269076 Project: 《《一头扎进》系列之Python+Selenium框架设计篇5- 价值好几K的框架,呦!这个框架还真牛叉哦!!! ''' # 3.导入模块 import unittest from automation_framework

Flask 邮件发送

荒凉一梦 提交于 2021-02-10 18:41:02
今天小婷儿给大家分享的是Flask 邮件发送。 Flask 邮件发送 一、Flask 邮件发送 from flask import Flask, render_template, current_app from flask_script import Manager from flask_mail import Mail, Message from threading import Thread app = Flask(__name__) # 配置邮箱服务器 app.config['MAIL_SERVER'] = 'smtp.163.com' # 邮箱用户 app.config['MAIL_USERNAME'] = ' 邮箱 @163.com' # 用户密码 app.config['MAIL_PASSWORD'] = ' 邮箱密码 ' # 创建Mail对象 mail = Mail(app) def async_send_mail(app, msg): # 邮件发送需要在程序上下文中进行, # 新的线程中没有上下文,需要手动创建 with app.app_context(): mail.send(msg) # 封装函数发送邮件 def send_mail(subject, to, template, **kwargs): # 从代理中获取代理的原始对象 app = current

Flask的RuntimeError错误处理

最后都变了- 提交于 2021-02-10 16:33:59
在Flask框架中,为我们提供了丰富的上下文对象/变量(request、session、current_app、g),这些上下文对象可以根据不同的上下文环境具备不同的值,所以他们是依赖于上下文环境的,而他们的使用也必须在上下文环境中,如果脱离了上下文环境,对这些没有上下文环境的上下文对象/变量进行相应的操作就会报错:RuntimeError   通俗一点理解(current_app):     应用上下文对象current_app就是对当前Flask创建出来的app对象的一个代理,所以在使用current_app的时候就需要指定它所代理的是哪个app对象(及指定上下文环境),如果未指定,系统就会报错RuntimeError      from flask import Flask, current_app app = Flask( __name__ ) # 错误写法 current_app.config[ ' SECRET_KEY ' ] = ' jfiagiisfashjsjf ' @app.route( " / " ) def demo(): print (current_app.config.get( ' SECRET_KEY ' )) return ' Is OK ' if __name__ == ' __main__ ' : app.run()   如果按照上面的写

python之six用法

◇◆丶佛笑我妖孽 提交于 2021-02-10 15:39:46
six.PY2 返回一个表示当前运行环境是否为python2的boolean值 six.PY3 返回一个表示当前运行环境是否为python3的boolean值 import six,sys print (six.PY2) # python2结果为True print (six.PY3) # python3结果为True sys.version_info[0] # PY2 = 2 sys.version_info[0] # PY3 = 3 sys.version_info[0:2] # PY34>= (3, 4) 常量 six.class_types 这里主要是针对python中的old-style和new-style, new-style为type, old-style为 types.ClassType。 python2中同时有old-style和new-style,python3中只有new-style。 six.integer_types 这里针对python2和python3中各自支持的int类型进行了区分:在python2中,存在 int 和 long 两种整数类型;在python3中,仅存在一种类型int。 six.string_types 这里针对python2和python3中各自的string类型进行了区分:在python2中,使用的为basestring

《算法图解》笔记

坚强是说给别人听的谎言 提交于 2021-02-10 10:02:38
  算法的运行时间并不以秒为单位。  算法的运行时间是其从增速的角度衡量的。  算法的运行时间用大O表示法表示 1.二分查找输入是一个有序列表。    def binary_search(list1, item):   """   二分查找的速度比简单查找快很多。   O(log n)比O(n)快。需要搜索的元素越多,前者就比后者快得越多。   """   start = 0   end = len(list1) - 1   while start <= end:     middle = int((start+ end) / 2)     guess = list1[middle]     if guess == item:       return middle     elif guess > item:       end = middle - 1     else:       start = middle+1   return None 2.选择排序    def findSmallest(arr):   smallest = arr[0]   small_index = 0   for i in range(1, len(arr)):     if arr[i] < smallest:     smallest = arr[i]     small_index = i

Python算法——《算法图解》笔记

谁说我不能喝 提交于 2021-02-10 09:50:33
算法目录 二分查找 大O表示法 选择排序 递归 快速排序,分而治之(D&C) 散列表——字典 广度优先搜索——BFS Dijkstra算法 贪婪算法 二分查找 1 # 要求list是有序表,num是要查找的数字 2 # 二分查找貌似只能查找数值表 3 def binary_search(list, num): 4 low = 0 5 high = len(list) - 1 # 因为python数组(列表)是从0开始索引的 6 7 while low <= high: 8 mid = (low + high) 9 guess = list[mid] 10 if guess == num: 11 return " found it is " + str(mid) 12 if guess > num: 13 high = mid - 1 14 else : 15 low = mid + 1 16 return " not found " 17 18 # python数组不同于matlab数组,python中间要用逗号隔开,而matlab不用 19 my_list = [1, 3, 5, 7, 9, 11, 13 ] 20 print (binary_search(my_list, 6 )) 21 print (binary_search(my_list, 9)) View Code

flask消息闪现

故事扮演 提交于 2021-02-10 09:34:02
反馈,是良好的应用和用户界面的重要构成。如果用户得不到足够的反馈,他们很可能开始厌恶这个应用。 Flask 提供了消息闪现系统,可以简单地给用户反馈。 消息闪现系统通常会在请求结束时记录信息,并在下一个(且仅在下一个)请求中访问记录的信息。展现这些消息通常结合要模板布局。 使用 flash() 方法可以闪现一条消息。 要操作消息本身,请使用 get_flashed_messages() 函数,并且在模板中也可以使用。 简单的闪现 这里是一个完成的例子: from flask import Flask , flash , redirect , render_template , \ request , url_for app = Flask ( __name__ ) app . secret_key = 'some_secret' @app.route ( '/' ) def index (): return render_template ( 'index.html' ) @app.route ( '/login' , methods = [ 'GET' , 'POST' ]) def login (): error = None if request . method == 'POST' : if request . form [ 'username' ] != 'admin'