模块测试

python基础(22):模块、包

早过忘川 提交于 2019-12-04 02:08:18
1. 模块 1.1 什么是模块 别人写好的函数、变量、方法放在一个文件里 (这个文件可以被我们直接使用)这个文件就是个模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。 但其实import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共享库或DLL的C或C++扩展 3.包好一组模块的包 4.使用C编写并链接到python解释器的内置模块 1.2 为什么要使用模块 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用。 1.3 如何使用模块 1.3.1 import 示例文件:自定义模块my_module.py #my_module.py print('from the my_module.py') money=1000 def read1(): print('my_module->read1->money

10、pytest -- skip和xfail标记

自作多情 提交于 2019-12-03 20:07:30
目录 1. 跳过测试用例的执行 1.1. @pytest.mark.skip 装饰器 1.2. pytest.skip 方法 1.3. @pytest.mark.skipif 装饰器 1.4. pytest.importorskip 方法 1.5. 跳过测试类 1.6. 跳过测试模块 1.7. 跳过指定文件或目录 1.8. 总结 2. 标记用例为预期失败的 2.1. 去使能 xfail 标记 3. 结合 pytest.param 方法 往期索引: https://www.cnblogs.com/luizyao/p/11771740.html 实际工作中,测试用例的执行可能会依赖于一些外部条件,例如:只能运行在某个特定的操作系统( Windows ),或者我们本身期望它们测试失败,例如:被某个已知的 Bug 所阻塞;如果我们能为这些用例提前打上标记,那么 pytest 就相应地预处理它们,并提供一个更加准确的测试报告; 在这种场景下,常用的标记有: skip :只有当某些条件得到满足时,才执行测试用例,否则跳过整个测试用例的执行;例如,在非 Windows 平台上跳过只支持 Windows 系统的用例; xfail :因为一个确切的原因,我们知道这个用例会失败;例如,对某个未实现的功能的测试,或者阻塞于某个已知 Bug 的测试; pytest 默认不显示 skip 和 xfail

python模块与包的详解

淺唱寂寞╮ 提交于 2019-12-03 17:06:49
一模块 1.什么是模块? 常见场景:一个模块包含python定义和声明的文件,文件名就是模块名字加上.py的后缀 2.为何要是用模块 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用 3.如何使用模块 3.1 import 示例文件:文件名my_module.py,模块名my_module 3.1.1 模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行(import语句是可以在程序中的任意位置使用的,且针对同一个模块很import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载大内存中的模块对象增加了一次引用,不会重新执行模块内的语句),如下 : import my_module 3.1.2 每个模块都是一个独立的名称空间,定义在这个模块中的函数

图片识别

北战南征 提交于 2019-12-03 16:51:26
#文字识别 pip install pytesseract #图片处理 pip install pillow 创建一个新项目: test_pytesseract:模块 pytesseract 的基本使用测试 test_pillow:模块 Pillow 的基本使用测试 case_verification:实战案例,破解网站图片验证码验证 python 图片库 : --》 image类 通过从文件加载图像,处理其他图像或从头开始创建图像。 http://p0.meituan.net/dpmerchantpic/645b8bf94a00f7d6b509c5d8aab7f14d644788.jpg #查看所能识别的字体 tesseract --list-langs #对图片识别 tesseract c.png c -l chi_sim #就会将 c.png 识别到的图片信息保存到 c.txt 中 来源: https://www.cnblogs.com/shaozheng/p/11803357.html

微服务简单说

一笑奈何 提交于 2019-12-03 13:12:24
微服务简单说 1 微服务架构定义 微服务一词源自 马丁·福勒(Martin Fowler) 在2014 年的一篇博客: Microservices 该文章中对微服务定义如下: the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage

python unittest 加载测试用例的方法

穿精又带淫゛_ 提交于 2019-12-03 10:01:14
方法一: suite=unittest.TestSuite() suite.addTest(类名(要运行的函数名)) #第一条测试用例 方法二: suite=unittest.TestSuite() loader=unittest.TestLoader() #用例加载器 suite.addTest(loader.loadTestsFromTestCase(类名)) #可以一次性加载某个类下面所有的测试用例 方法三: suite=unittest.TestSuite() loader=unittest.TestLoader() suite.addTest(loader.loadTestsFromModule(模块名)) #可以一次性加载某个模块下面所有的测试用例 运行 runner=unittest.TextTestRunner() runner.run(suite) 来源: https://www.cnblogs.com/wind666/p/11787396.html

Linux字符设备驱动编写和测试

与世无争的帅哥 提交于 2019-12-03 09:31:34
一、字符设备结构体   字符设备驱动、块设备驱动和网络设备驱动作为linux内核三大驱动设备,字符设备主要完成字节的读写操作,常见的应用有鼠标、键盘等,结构体形式如下所示: 1 struct cdev{ 3   struct kobject kobj; 5   struct module *owner;//所说模块 7   struct file_operations *ops;//字符设备操作方法 9   struct list_head list; 11   dev_t dev; //设备 13   unsigned int count; 15 }   ①、cdev结构体中的dev_t表示32位的设备号,12位为主设备号,20位为次设备号,可通过宏定义MAJOR(dev_t dev)和MINOR(dev_t dev)从dev_t中获得主设备号和次设备号。此外,还可以使用宏定义MKDEV(int major, int minor)通过主设备号和次设备号生成dev_t。   ②、Linux内核提供了一组函数对字符设备结构体进行操作,可用于操作cdev结构体。 1 void cdev_init(struct cdev *, struct file_operations *); //用于初始化cdev的成员,并建立cdev和file_operation之间的连接 2 struct

Linux kernel 模块 hello 测试

耗尽温柔 提交于 2019-12-03 07:07:14
原文链接: https://www.cnblogs.com/nerohwang/p/3621316.html hello.c 文件: #include <linux/kernel.h> /*Needed by all modules*/ #include <linux/module.h> /*Needed for KERN_* */ #include <linux/init.h> /* Needed for the macros */ MODULE_LICENSE("GPL"); static int year=2014; static int hello_init(void) { printk(KERN_WARNING "Hello kernel, it's %d!\n",year); return 0; } static void hello_exit(void) { printk("Bye, kernel!\n"); } /* main module function*/ module_init(hello_init); module_exit(hello_exit); Makefile文件: obj-m := hello.o all : $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

星云精准测试对安卓底层驱动代码的测试案例分析

早过忘川 提交于 2019-12-03 04:12:42
Android原生底层驱动应用面极广,但一直没有很好的办法进行质量追踪。本文借助星云精准测试的高可靠性的测试技术手段,针对Android原生底层驱动进行分析、插桩、编译、采集数据、数据分析等,逐步讲解精准测试是如何实现android原生底层驱动的对接。 在本文中,我们可以清晰地查看到如何进行技术对接的每一步,比如如何使用星云精准测试进行代码插桩、实现测试用例与采集底层驱动运行代码的数据追溯、对最终采集的数据进行一系列分析等。 一、安卓源码精准测试流程概述 经分析android源码的编译主要依靠Android.bp为纽带连接起来;在编译时,只需要在想要编译的模块目录下执行mm命令即可自动的根据当前目录下的Android.bp文件对其所包含的模块进行编译。 主要流程大致为:先将ZOA通信库源码复制进去并加入某一层次的Android.bp中,再通过对包含所有Android.bp编译信息的ninja文件的解析可以得到Shell认可的插桩json文件,Shell通过json文件对对应目录的代码进行插桩,插桩完成后,把对ZOA通信库的引用加入该模块的Android.bp中再放入ZoaInstru.h头文件后就可以正常编译出插桩程序了。 二、对安卓源码进行精准测试的准备工具 1.安卓原生8.1.0系统源码,放于/data/source2/目录下 2.shell.tar.gz插桩工具包放于

星云精准测试对安卓底层驱动代码的测试案例分析

左心房为你撑大大i 提交于 2019-12-03 04:12:36
Android原生底层驱动应用面极广,但一直没有很好的办法进行质量追踪。本文借助星云精准测试的高可靠性的测试技术手段,针对Android原生底层驱动进行分析、插桩、编译、采集数据、数据分析等,逐步讲解精准测试是如何实现android原生底层驱动的对接。 在本文中,我们可以清晰地查看到如何进行技术对接的每一步,比如如何使用星云精准测试进行代码插桩、实现测试用例与采集底层驱动运行代码的数据追溯、对最终采集的数据进行一系列分析等。 一、安卓源码精准测试流程概述 经分析android源码的编译主要依靠Android.bp为纽带连接起来;在编译时,只需要在想要编译的模块目录下执行mm命令即可自动的根据当前目录下的Android.bp文件对其所包含的模块进行编译。 主要流程大致为:先将ZOA通信库源码复制进去并加入某一层次的Android.bp中,再通过对包含所有Android.bp编译信息的ninja文件的解析可以得到Shell认可的插桩json文件,Shell通过json文件对对应目录的代码进行插桩,插桩完成后,把对ZOA通信库的引用加入该模块的Android.bp中再放入ZoaInstru.h头文件后就可以正常编译出插桩程序了。 二、对安卓源码进行精准测试的准备工具 1.安卓原生8.1.0系统源码,放于/data/source2/目录下 2.shell.tar.gz插桩工具包放于