目标:
如何创建《项目“骨架”目录》
包含:项目文件布局、自动化测试代码,模组,以及安装脚本。
由于编写一个Python文件可以作为一个模块,一个带__init__.py的目录算一个包。
创建:
第一步
需要构架的项目文件框架如下:
第二步
构建代码(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
第四步:
测试框架
流程:
1. 拷贝这份骨架目录,把名字改成你新项目的名字。
2. 再将NAME 模组更名为你需要的名字,它可以是你项目的名字,当然别的名字也行。
3. 编辑setup.py 让它包含你新项目的相关信息。
4. 重命名tests/NAME_tests.py ,让它的名字匹配到你模组的名字。
5. 使用nosetests 检查有无错误。
6. 开始写代码吧。
优秀的项目目录:
Foo/
|-- bin/
| |-- foo
|
|-- foo/
| |-- tests/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |-- main.py
|
|-- docs/
| |-- conf.py
| |-- abc.rst
|
|-- setup.py
|-- requirements.txt
|-- README
1. bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行。
2. foo/: 存放项目的所有源代码。(1) 源代码中的所有模块、包都应该放在此目录。不要置于顶层目录。(2) 其子目录tests/存放单元测试代码; (3) 程序的入口最好命名为main.py。
3. docs/: 存放一些文档。
4. setup.py: 安装、部署、打包的脚本。
5. requirements.txt: 存放软件依赖的外部Python包列表。
6. 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
知识在于点点滴滴的积累,我会在这个路上Go ahead,
有幸看到我博客的朋友们,若能学到知识,请多多关注以及讨论,让我们共同进步,扬帆起航。
后记:打油诗一首
适度锻炼,量化指标
考量天气,设定目标
科学锻炼,成就体标
高效科研,实现学标