Python3练习题系列(10)——项目骨架构建
目标:
创建:
第一步
需要构架的项目文件框架如下:
第二步
构建代码(Linux系统下的终端):
~ $ mkdir -p projects
~ $ cd projects/
~/projects $ mkdir skeleton
~/projects $ cd skeleton
~/projects/skeleton $ mkdir bin NAME tests docs
# 初始文件配置
~/projects/skeleton $ touch NAME/__init__.py
~/projects/skeleton $ touch tests/__init__.py
注:Window下直接建立文件夹即可。
第三步
安装项目文件需要的模块:setup.py文件内容如下:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup config = {
'description':'My Project',
'author':'My Name',
'url':'URL to get it at.',
'download_url':'Where to download it.',
'author_email':'My email.',
'version':'0.1',
'install_requires':['nose'],
'packages':['NAME'],
'scripts':[],
'name':'projectname'
} setup(**config)
创建一个tests/NAME_tests.py的测试文件,代码如下:
from nose.tools import *
import NAME def setup():
print('SETUP') def teardown():
print('TEAR DOWN') def test_basic():
print('I RAN!')
最终项目骨架结构:
projects/
|-- skeleton/
| |-- bin
| |-- NAME
| | |-- __init__.py
| |-- tests
| | |-- __init__.py
| | |-- NAME_tests.py
| |-- docs
|-- setup.py
|-- Readme
第四步:
测试框架

流程:
优秀的项目目录:
Foo/
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
典型的Python文件结构
单元测试框架之nose知识点
nose相关执行命令:
- nosetests –h查看所有nose相关命令
- nosetests –s执行并捕获输出
- nosetests –with-xunit输出xml结果报告
- nosetests -v: 查看nose的运行信息和调试信息
- nosetests -w 目录:指定一个目录运行测试
nose 特点:
自动发现测试用例(包含[Tt]est文件以及文件包中包含test的函数)
- 以test开头的文件
- 以test开头的函数或方法
- 以Test开头的类
经过研究发现,nose会自动识别[Tt]est的类、函数、文件或目录,以及TestCase的子类,匹配成功的包、任何python的源文件都会被当做测试用例。
Python3包的创建与安装

参考文献:
- 笨办法学Python
- http://blog.chinaunix.net/uid-26602509-id-3499026.html
- http://python.jobbole.com/86376/
- https://www.cnblogs.com/semishigure/archive/2017/08/03/7268251.html
- Head First Python
后记:打油诗一首
适度锻炼,量化指标
考量天气,设定目标
科学锻炼,成就体标
高效科研,实现学标
Python3练习题系列(10)——项目骨架构建的更多相关文章
- Python3练习题系列(09)——物以类聚,人以群分
目标: 用类管理同类事物 解析: 用到“class”的编程语言被称作“Object Oriented Programming(面向对象编程)”语言.首先你需要做出“东西”来,然后你“告诉”这些东西去完 ...
- Python3练习题系列(06)——各种符号总结
Python3中的各种符号总结 1关键字 import keyword print(keyword.kwlist, end='\t') ['False', 'None', 'True', 'and', ...
- Python3练习题系列(05)——设计和调试规则
If 语句的常见规则 1. 每一个“if 语句”必须包含一个else: 2. 如果这个else 永远都不应该被执行到,因为它本身没有任何意义,那你必须在else 语句后面使用一个叫做die 的函数,让 ...
- Python3练习题系列(07)——列表操作原理
目标: 理解列表方法的真实含义. 操作: list_1.append(element) ==> append(list_1, element) mystuff.append('hello') 这 ...
- Python3练习题系列(08)——代码阅读方法及字典跳转表理解
问题:分析下面代码 cities['_find'] = find_city city_found = cities['_find'](cities, state) 分析过程: 一个函数也可以作为一个变 ...
- Python3练习题系列(01)
2018-06-13 题目: 根据用户回答做出相应的判断,完成一个“回答-判断”的小游戏 Python3知识点: if, else, elif 实例代码: print("You enter ...
- Python3练习题系列(04)
题目: 制作一个游戏 知识点: 函数.if_elif_else, while, exit 游戏图谱: 游戏代码: from sys import exit def gold_room(): print ...
- Python3练习题系列(03)
题目: 思考While循环,看看它的特点是什么? 知识点: while循环 分析: 特点:while-loop(while 循环).while-loop 会一直执行它下面的代码片段,直到它对应的布尔表 ...
- Python3练习题系列(02)
题目: 思考循环结构,看看它是怎样运行的,对我们认识程序有何益处. 知识点: list, for-loop, range 练习代码: 练习1 the_count = [1, 2, 3, 4, 5] # ...
随机推荐
- ARMV8 datasheet学习笔记4:AArch64系统级体系结构之Generic timer
1.前言 2.generate timer 2.1 概述 提供了一个系统计数器,用来实时测量流逝的时间: 提供了一个虚拟计数器,用来测量某个虚拟机上流逝的虚拟时间: 定时器,每隔一段时间会触发事件,支 ...
- C语言表驱动法编程实践
数据压倒一切.如果选择了正确的数据结构并把一切组织的井井有条,正确的算法就不言自明.编程的核心是数据结构,而不是算法. ——Rob Pike 说明 本文基于这样的认识:数据是易变的,逻辑是稳定的. ...
- 命令行command line 使用 http proxy的设置方法 Setting Up HTTP Proxy in Terminal
Step 1: Install Shadowsocks Client Shadowsocks is an open-source proxy project to help people visit ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- tomcat环境多个jdk版本自定义使用JDK版本及路径
windows环境: 多个应用使用tomcat并且有不同版本的jdk,为避免重复可以在启动文件中指定JDK的版本 如新安装的JDK6在C:\Program Files\Java\jdk1.7.0_79 ...
- Makefile 隐含规则,模式规则,常见变量
隐含规则复杂的Makefile一般会使用隐含规则内的变量来简化编译处理.将隐含规则中使用的变量分成两种:一种是命令相关的,如“CC”:一种是参数相关的,如“CFLAGS”.这些变量都是大写表示. 常 ...
- web----Twisted
Twisted模块: Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等.
- iOS学习笔记之UITableViewController&UITableView
iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论 ...
- jquery追加元素的不同语法
问题 项目中越来越多的地方需要实现无刷新来更新页面局部内容,使用ajax从后台获取数据然后追加到页面中.那么怎么获取数据之后如何实现元素的追加呢? 解决 jQuery提供追加元素函数,掌握常用的四种追 ...
- 【C++ Primer | 15】C++类内存分布
C++类内存分布 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承.虚函数存在的情况下. 下面可以定义一个类,像下面这样: c ...