Runner

Scrapy:运行爬虫程序的方式

霸气de小男生 提交于 2020-04-26 06:10:43
Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 在创建了爬虫程序后,就可以运行爬虫程序了。Scrapy中介绍了几种运行爬虫程序的方式,列举如下: -命令行工具之scrapy runspider(全局命令) -命令行工具之scrapy crawl(项目级命令) -scrapy.crawler.CrawlerProcess -scrapy.crawler.CrawlerRunner 注意 ,当系统中同时存在Python 2、Python 3时,孤的电脑直接执行scrapy命令使用的是Python 2,此时,需要在scrapy命令前添加“python3 -m”才可以使用Python 3,因此,请使用virtualenv建立虚拟环境运行scrapy等各种程序。 方式一:scrapy runspider命令(全局) 语法: scrapy runspider <spider_file.py> 还有一些配置项,可以使用scrapy runspider -h查看。 示例程序:文件名为baidu_com.py 1 # -*- coding: utf-8 -*- 2 import scrapy 3 4 class BaiduComSpider(scrapy.Spider): 5 name = ' baidu.com ' 6 allowed_domains = [

appium+python+unittest+HTMLRunner编写UI自动化测试集

Deadly 提交于 2020-04-24 15:34:34
简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 参考:https://juejin.im/post/5c3809a451882524c84ebabe 最终,得到App的信息如下: 1 appPackage:com.nbi.aquatic 2 appActivity:.ui.login.LoginActivity 定位UI控件的工具 使用Android SDK的uiautomatorviewer.bat(在..\sdk\tools\ 目录下),电脑开启开发者模式,可以使用adb命令的状态下使用该sdk自带的工具,可视化安卓手机的界面信息 ★ 脚本结构 somke_test.py 存放测试集 config.py 存放自动化测试所用到的数据,如账号密码,默认密码等 pool.py等 测试集中的一个测试用例的page层 base.py 页面基础层,供page层继承 HTMLTestRunner.py 生成测试报告的模块,可集成到代码里不需在环境中安装该模块,也可在电脑python环境里安装配置 (参考

(appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

為{幸葍}努か 提交于 2020-04-24 15:33:32
前言 上篇文章【 (appium+python)UI自动化_08_unittest编写测试用例 】讲到如何使用unittets编写测试用例,并执行测试文件。接下来讲解下unittest如何批量执行测试文件并生成测试报告。 简单实例 实例讲解 一、 项目路径获取 project_name:项目名称,需更换为自己项目的名称 project_path:项目路径,获取思路 os.path.abspath(__file__):获取当前文件路径 split(project_name)[0]:通过项目名切割出项目上级目录 os.path.join():拼接,传入项目上级目录、项目名拼接出项目路径 二、discover加载测试用例 1, 需从unittest引入defaultTestLoader 2, discover(self,start_dir,pattern=‘test*.py’,top_level_dir=None)包含三个有效参数 start_dir:执行用例目录 pattern:用例名匹配顾泽,默认test*.py(匹配test开头的所有脚本) top_level_dir:顶层目录名称,一般默认None(可不传值) 实例中start_dir传入的是case_path(路径拼接获取,大家可以根据自己的用例位置进行拼接) 三、生成测试报告 1,需先导入报告文件 HTMLTestRunner

基于netty实现rpc框架-spring boot服务端

China☆狼群 提交于 2020-04-23 22:28:46
demo地址 https://gitee.com/syher/grave-netty RPC介绍 首先了解一下RPC:远程过程调用。简单点说就是本地应用可以调用远程服务器的接口。那么通过什么方式调用远程接口呢?说白了RPC只是一种概念。他的调用可以基于HTTP实现,也可以基于TCP/IP实现。甚至私人定制的通讯协议。 当然,私人定制通讯协议成本过高且不具备通用性。我们不做展开讨论(其实我也展不开。。。)。那为什么不使用HTTP协议呢?受限于HTTP协议层级过高,数据传输效率不如TCP/IP。所以RPC远程调用一般采用TCP/IP实现。即调用socket方法。 RPC实现原理 1. 客户端发起远程服务调用。 2. 客户端将类信息、调用方法和入参信息通过socket通道发送给服务端。 3. 服务端解析数据包,调用本地接口。 5.将执行结果通过socket返回给客户端。 6.客户端拿到并解析返回结果。 RPC实现 java如何实现一个rpc框架,其实就是按照上面的原理再做一些详细的补充。比如通过动态代理封装客户端的数据包、通过反射机制实现服务端实现类的调用等等。 今天,我们先基于spring boot + netty 做rpc服务端的实现。 首先,做一个注解用于标识接口提供rpc调用。 @Target(ElementType.TYPE) @Retention

API测试工具SoapUI & Postman对比分析

旧巷老猫 提交于 2020-04-23 10:50:17
本文由葡萄城技术团队于博客园原创并首发 转载请注明出处: 葡萄城官网 ,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 最近公司要引入API测试工具,经过调查和了解,最终决定在SoapUI 和 Postman两种工具之间做一个选择,两种工具在业界都很有名,相信很多人两种工具也都曾使用过。 SoapUI SoapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。SoapUI Pro是SoapUI的商业非开源版本,实现的功能较开源的SoapUI更多。 Postman Postman是由Postdot Technologies公司打造的一款功能强大的调试HTTP接口的工具,它最早是Chrome中最受欢迎的插件之一,现已扩展到Mac,Windows和Linux客户端。 软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman分免费版和收费版本。 下面我们对这两个工具通过多种维度进行对比,相信通过这些对比维度综合得出的结果,能对也处在为测试工具选型阶段的你带来一些启发和帮助。 1.搜索指数 通过百度搜索指数可以看出,以近一月的搜索趋势来看

Springboot2 Tests

非 Y 不嫁゛ 提交于 2020-04-22 01:50:56
import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; @RunWith(SpringRunner.class)

设计模式杂谈

﹥>﹥吖頭↗ 提交于 2020-04-21 10:05:23
关于设计的个人看法 我们设计一个功能的时候,要考虑的无非是那些问题:可靠性,鲁棒性,解耦性,扩展性,可读性等等。 我们对代码和功能的设计过程,从面相对象的角度来讲就是一个拟物或者拟人化的一个过程——我们先确定某个功能需要什么样的角色或者“零部件”参与,然后创建对应的类,指定类的角色职能;然后各个类各司其职;然后再考虑类的扩展性相关的问题,做出优化。 设计功能的第一步当然是明确需求,但是功能落地的重要过程我认为就是拟物拟人化的这个过程。 设计案例分析 现在我们有个需求,异步模块——将要执行的数据放到后台异步去执行,使用场景有数据导入导出,数据库间数据同步等。 现在我们进行拟物拟人化的过程(角色划分)我将这个功能划分成一下几个角色 任务 指要处理的数据等 资源 这里单指线程池 任务处理器 处理任务的具体逻辑。 管理器 负责调度线程,安排任务,将任务分发给各个处理器 功能设计到这,这个框架只能满足使用要求,通用性不强;就是说,能用但是比较垃圾。为什么这么说, 首先,我们任务应该以什么样的形式获取?又以什么样的形式去发布一个一个任务?框架中未做说明,也没有角色来干这个事情,所以我们要在管理器中定义一个命令模式,这个命令就是任务,命令方法就是发布任务,再在其内部使用模板方法模式固定一些算法。再添加一个任务工厂来获取和管理任务。 然后任务处理器这一端,任务处理逻辑肯定是使用者自己实现的

gitlab-runner在Kubernetes环境下挂载宿主机目录的方法

最后都变了- 提交于 2020-04-21 00:44:48
gitlab-runner在Kubernetes里安装的方法可以通过官方提供的chart来用helm3安装。官方chart的仓库地址为: https://gitlab.com/gitlab-org/charts/gitlab-runner ,但这里有个问题就是无法配置宿主机的挂载目录,根据gitlab-runner在docker模式下挂载目录的方法,并且结合官方文档,做如下改动即可支持挂载目录,修改templates/configmap.yaml文件,在"# Start the runner"前面增加如下代码: cat >>/home/gitlab-runner/.gitlab-runner/config.toml <<EOF [[runners.kubernetes.volumes.host_path]] name = "docker-sock" mount_path = "/var/run/docker.sock" read_only = true host_path = "/var/run/docker.sock" [[runners.kubernetes.volumes.host_path]] name = "cache" mount_path = "/cache" read_only = false host_path = "/data/gitlab-runner

【并发编程】实现多线程的几种方式

二次信任 提交于 2020-04-20 08:32:19
本博客系列是学习并发编程过程中的记录总结。由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅。 并发编程系列博客传送门 在Java中有多种方式可以实现多线程编程(记得这是一道常问的面试题,特别是在应届生找工作的时候被问的频率就更高了)。 继承Thread类并重写run方法; 实现Runnable接口,并将这个类的实例当做一个target构造Thread类 实现Callable接口; 继承Thread类 通过继承Thread类来实现多线程编程很容易。下面代码中 MyThread 类继承了 Thread 类,并重写了run方法。 但是这种方式不是很建议使用,其中最主要的一个原因就是Java是单继承模式, MyThread 类继承了 Thread 类之后就不能再继承其他类了。另外任务与代码没有分离,当多个线程执行一样的任务时需要多份任务代码。所以使用implement的形式比继承的方式更好。后面会讲到使用Runnable接口实现多线程。 public class MyThread extends Thread { public static final int THREAD_COUNT = 5; public static void main(String[] args) { List<Thread> threadList = new ArrayList<>();

小白学 Python 数据分析(17):Matplotlib(二)基础操作

≯℡__Kan透↙ 提交于 2020-04-18 03:24:43
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择 小白学 Python 数据分析(7):Pandas (六)数据导入 小白学 Python 数据分析(8):Pandas (七)数据预处理 小白学 Python 数据分析(9):Pandas (八)数据预处理(2) 小白学 Python 数据分析(10):Pandas (九)数据运算 小白学 Python 数据分析(11):Pandas (十)数据分组 小白学 Python 数据分析(12):Pandas (十一)数据透视表(pivot_table) 小白学 Python 数据分析(13):Pandas (十二)数据表拼接 小白学 Python 数据分析(14):Pandas (十三)数据导出 小白学 Python 数据分析(15):数据可视化概述 小白学 Python 数据分析(16)