python 骨架中测试骨架是什么意思

下次自动登录
现在的位置:
& 综合 & 正文
python 骨架
首先使用下述命令创建你的骨架目录:
~ $ mkdir -p projects
~ $ cd projects/
~/projects $ mkdir skeleton
~/projects $ cd skeleton
~/projects/skeleton $ mkdir bin NAME tests docs
我使用了一个叫 projects 的目录,用来存放我自己的各个项目。然后我在里边建立了一个叫做 skeleton 的文件夹,这就是我们新项目的基础目录。其中叫做NAME 的文件夹是你的项目的主文件夹,你可以将它任意取名。
接下来我们要配置一些初始文件:
~/projects/skeleton $ touch NAME/__init__.py
~/projects/skeleton $ touch tests/__init__.py
以上命令为你创建了空的模组目录,以供你后面为其添加。然后我们需要建立一个 setup.py 文件,这个文件在安装项目的时候我们会用到它:
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!"
Python 软件包的安装。
1、首先安装 python
我用的是2.7.5 windows版
下载地址:http://www.python.org/download/
记好你的目录
我的是 E:\Program Files\python2.7
2、添加环境变量
控制面板-&系统-&高级系统设置-&环境变量
path=E:\Program Files\python2.7(注意这里要填你自己的python的目录)
我推荐用这个方法:
从开始菜单运行“PowerShell”。你可以使用开始菜单的搜索功能,输入名称后敲回车即可打开。
[Environment]::SetEnvironmentVariable("Path", "$env:PE:\Program
Files\pyrhon2.7", "User")。
你也许需要重启
powershell 或者计算机来让路径设
cmd 下启动python 你应该看到的结果
ActivePython 2.6.5.12 (ActiveState Software Inc.) based on
Python 2.6.5 (r265:79063, Mar 20 :52) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
3、下载 setuptools
注意对应 Python 的版本,完成后运行 exe 即可完成安装
setuptools-0.6c11.win32-py2.7.exe
你可以在python官网上那个搜索一下
我是在csdn上下的
感觉很好用
4、你需要下的各种包:
(1)、pip –
(2)、distribute –
(3)、nose –
(4)、virtualenv – v
5、安装 pip
5.1 解压 pip-1.4.1.tar.gz(这个版本应该不影响,我用的是最新版本)
5.2 运行CMD,进入命令行
5.3 用CD命令进入 pip 解压目录
5.4 输入 "python setup.py install"
5.5 添加环境变量 path = E:\Program Files\Python2.7\Scripts
6、安装其他包
安装distribute,
nose, virtualenv进入命令行,输入 "pip install package",package为安装包名称。
注意要在该包的路径下安装
安装好之后
在你的project目录下做下面的事情:
~/projects/skeleton $ nosetests
----------------------------------------------------------------------
Ran 1 test in 0.007s
看到这个结果说明你安装成功了。
参考:learn
python the hard way
&&&&推荐文章:
【上篇】【下篇】在Python中使用测试驱动开发
测试驱动开发(TDD)是一个近些年被实践证明过的过程。把测试带入日常的编码过程而不是编码完成后才进行测试的过程应该是开发人员试图成为习惯的方式而不是空谈的方式。
测试驱动开发的整个过程是很容易被掌握的,而且给我们带来很多的好处--代码质量的提高,但是也清晰和专注于你要达到的目标它是什么以及你要怎样达到目标。测试驱动开发也可以无缝地与敏捷开发一起工作,在结对编程的时候,能够充分被利用,你将在后面会看到。
在本教程中,我将会介绍测试驱动开发的核心概念,提供使用python的nosetests单元测试包的相关例子。另外,我将提供一些可选的软件包。
什么是测试驱动开发?
这里采用了百度百科的测试驱动开发词条的含义:
测试驱动开发,英文全称Test-Driven
Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。
Beck先生最早在其极限编程(XP)方法论中,向大家推荐“测试驱动”这一最佳实践,还专门撰写了《测试驱动开发》一书,详细说明如何实现。经过几年的迅猛发展,测试驱动开发已经成长为一门独立的软件开发技术,其名气甚至盖过了极限编程。
如上图所示,测试驱动开发的过程如下:
1.编写一个失败的单元测试用例;
2.编写代码使得单元测试用例通过;
如果必要的话,为每一个可能,重复此过程。
敏捷开发与测试驱动开发
简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。测试驱动开发是一个与敏捷开发过程中的理想和原则的完美匹配,是一个努力提供增量更新的产品的真正的质量,而不是数量。测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。
单元测试的语法
我们使用Python的单元测试的主要方法是:
assert-基础断言,允许用户自己扩展断言;
assertEqual(a, b)-判断a和b是否相等;
assertNotEqual(a, b)-检查a和b是否不相等;
assertIn(a, b)-检查a是否在b中;
assertNotIn(a, b)-检查a是否不在b中;
assertFalse(a)-检查a的值是否是False;
assertTrue(a)-检查a的值是否是True;
assertIsInstance(a, TYPE)-检查a的类型是否是“TYPE”;
assertRaises(ERROR, a, args)-检查当a使用参数args被调用的时候是否会引发ERROR;
也有些其它的方法提供给我们,您可以查看- Python单元测试文档的
-但是,在我的经验中,上面列出的是最常用的。下面我们将利用这些在我们的例子中。
用python测试驱动开发的例子
我们将要看到一个真正简单的例子,这个例子用来介绍使用python单元测试和测试驱动开发的概念。我们将编写一个非常简单的计算器类,包含加,减和其他简单的方法,你会期望的。按照测试驱动开发的做法,让我们说,我们有一个要求添加功能,这将决定两个数字,并返回输出。让我们来写一个失败的测试。
import unittest
class TddInPythonExample(unittest.TestCase):
def test_calculator_add_method_returns_correct_result(self):
Calculator()
calc.add(2,2)
self.assertEqual(4,
写这个测试十分简单:
1.首先需要从python的标准库中导入unittest模块;
2.接着,我们需要写一个包含不同测试用例的类;
3.最后,需要编写一个测试的函数,唯一的要求是函数名是以“test_”开头,这样能够被nosetest识别以及执行,我们将在后面详细介绍。
我们可以编写具体的测试代码在函数中的位置。我们初始化我们的计算器,这样我们就可以执行它的方法。在此之后,我们就可以调用add的方法,这是我们希望测试,其输出值存储在变量result中。一旦完成,我们就可以进行单元测试的assertEqual方法的使用,以确保我们的计算器的add方法的行为如预期一样。
现在如果我们运行测试代码,将会看到下面的失败信息:
从nosetest输出的结果来看,我们的代码中没有导入Calculator。这是因为我们根本还没有创建它!因此我们定义Calculator以及导入它:
class Calculator(object):
def add(self, x,
import unittest
from calculator import Calculator
class TddInPythonExample(unittest.TestCase):
def test_calculator_add_method_returns_correct_result(self):
Calculator()
calc.add(2,2)
self.assertEqual(4,
现在我们已经有了Calculator的定义了,让我们看看nosetest的提示:
所以,很显然,我们的添加的Calculator返回错误值,因为它不会做任何事情的时刻。很巧的是,nosetest能给出问题所在的那一行,这样我们可以确认,我们需要改变什么。让我们来修正Calculator方法,以保证我们的测试通过:
class Calculator(object):
def add(self, x,
return x+y
成功了!我们已经定义了add方法,它按预期工作。但是,我们还有更多的工作要做,以确保我们已经测试正确。
如果有人要添加任何数字以外,会发生什么情况?实际上,Python会允许添加字符串和其他类型,但在我们的例子中,我们的计算器,它仅是允许添加数字。让我们添加另一个失败的测试,这种情况下,利用的assertRaises方法来测试:
import unittest
from calculator import Calculator
class TddInPythonExample(unittest.TestCase):
def test_calculator_add_method_returns_correct_result(self):
Calculator()
calc.add(2,2)
self.assertEqual(4,
def test_calculator_returns_error_message_if_both_args_not_numbers(self):
self.assertRaises(ValueError, self.calc.add, 'two',
现在又出现一个失败的例子,我们需要修改add函数来修正:
class Calculator(object):
def add(self, x,
number_types = (int,
long, float,
if isinstance(x,
number_types) and
isinstance(y, number_types):
return x+y
raise ValueError
从上面的代码看来,我们已经添加一个小的修改:检查输入值的类型确保是函数需要的类型。为了更加全面的测试,我们还需要添加更多的测试用例:
import unittest
from calculator import Calculator
class TddInPythonExample(unittest.TestCase):
def test_calculator_add_method_returns_correct_result(self):
Calculator()
calc.add(2,2)
self.assertEqual(4,
def test_calculator_returns_error_message_if_both_args_not_numbers(self):
self.assertRaises(ValueError, self.calc.add, 'two',
def test_calculator_returns_error_message_if_x_arg_not_number(self):
self.assertRaises(ValueError, self.calc.add, 'two',
def test_calculator_returns_error_message_if_x_arg_not_number(self):
self.assertRaises(ValueError, self.calc.add, 2,
安装以及使用python的Nose
对于nose的安装可以采用:
"pip install nose"
安装后运行测试代码可以:
"nosetests example_unit_test.py"- to execute a singlefileof
"nosetests /path/to/tests"- to execute a suite of testsina
你需要遵循的唯一标准是“test_”开始每个测试的方法,以确保在nosetest可以找到您的测试!
一些有用的参数:
V:提供更详细的输出,包括正在执行的测试的名称
-S或-nocapture:允许输出报表打印,这是正常获取和执行测试时隐藏。对调试有用。
nologcapture:允许输出的日志信息
rednose:一个可选的插件,可以下载,但提供了彩色输出的测试。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!IBM Bluemix
点击按钮,开始云上的开发!
developerWorks 社区
最近出现了行业级的 Python 测试框架,这意味着 Python 测试可以编写得更简洁、更统一,能够产生更好的结果报告。本文介绍比较先进的测试框架并讨论它们的基本特性。
, 独立顾问, Rhodes Mill Studios, Inc.
Brandon Craig Rhodes 是 Python Magazine 的主编和独立的 web 应用程序顾问,在 Python 语言方面具有十年以上的经验。他维护几大洲的天文学家所使用的 PyEphem 扩展模块已经超过九年了,这个模块为行业级计算的天文学例程提供面向对象的接口。Brandon 是 Python Atlanta 用户组的成员。
Python 测试领域的蛮荒时代结束了。仅仅在几年前,几乎每个用 Python 构建的项目在编写和运行测试方面都采用自己的习惯做法。但是现在,这种混乱局面终于要结束了。社区中已经出现了几种出色的测试解决方案,它们为数百个流行的项目的测试套件提供约定和通用标准。本文是
的第一篇,本系列要介绍新的测试框架。在本文中,将介绍三种流行的测试框架,讨论新一代工具鼓励的简单测试风格。第二篇文章发现和选择测试 讨论更大的问题:这些框架如何自动地发现和分类项目的测试。最后一篇文章用 Python 测试框架生成测试报告 讨论这些框架为查看测试结果提供的强大特性。通过学习这三种框架的通用习惯做法,您不但可以更好地理解其他程序员编写的 Python 包,还可以为自己的应用程序构建优雅、强大的测试套件。候选框架:三种 Python 测试框架有三种 Python 测试框架是目前使用最为广泛的。下面按时间次序简要介绍它们:zope.testing通常,从事 Zope 项目的开发人员就像是早期的拓荒者。他们需要以一种统一的方式在大型代码基上发现和运行测试,为此开发了 zope.testing 包,这个包现在仍然得到广泛使用。zope.testing 包只支持 unittest 和 doctest 等传统 Python 测试风格,而不支持更现代的框架支持的简化风格。但是,它提供一个强大的分层系统,在这种系统中包含测试的目录可以依赖于通用的设置代码,设置代码为层(而不是每个测试)创建一个运行测试所需的环境。py.test2004 年,Holger Krekel 把他的 std 包改名为 ‘py’,因为原来的名称常常与 Python 附带的标准库混淆。尽管这个包包含另外几个子包,但是现在最著名的部分只有它的 py.test 框架。py.test 框架建立了 Python 测试的新标准,目前许多开发人员都采用这种标准。它为编写测试提供了优雅的符合 Python 风格的习惯做法,让开发人员能够以非常紧凑的风格编写测试套件。nosenose 项目是于 2005 年发布的,也就是 py.test 改名后的一年。它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装和维护。尽管 py.test 在某些方面有所进步,目前也很容易安装,但是 nose 仍然保持了易用性方面的声誉。在 Python 大会上,常常会看到开发人员穿着黑色 T 恤衫,上面印着 nosetests 命令,后面是表示测试成功的点号。有意思的是,随着 nose 的发展,在项目邮件列表上常常看到开发人员向项目负责人询问他们的项目什么时候可以转换到 nose。
在这三种框架中,nose 看起来会成为标准,py.test 的用户群比较小,但是很忠诚,zope.testing 只在基于 Zope 框架的项目中受欢迎。但是,这三种框架都得到积极的维护,各有一些独特的特性。建议您了解它们的特性和差异,选择适合自己项目的框架。测试演化py.test 框架接受普通的 Python 函数作为测试,而不要求把测试放在更大更重型的测试类中,这开启了 Python 测试的新时代。因为 nose 框架支持相同的习惯做法,所以这些模式很可能越来越流行。假设希望检查 Python 真假值 True 和 False 是否真的等于布尔数字 1 和 0。py.test 或 nose 接受并运行以下代码行,作为回答此问题的有效测试:# test_new.py - simple tests functions
def testTrue(self):
assert True == 1
def testFalse(self):
assert False == 0为了体会以上示例的简单性,可以对比过去的 Python 测试文档中复杂的示例测试,比如:# test_old.py - The old way of doing things
import unittest
class TruthTest(unittest.TestCase):
def testTrue(self):
assert True == 1
def testFalse(self):
assert False == 0
if __name__ == '__main__':
unittest.main()看到了吗?这么多代码只是为了支持两行测试代码!首先,代码需要一个 import 语句,这与要测试的代码完全无关,因为测试本身简单地忽略模块,只使用内置的 Python 值,比如 True 和 False。另外,要创建一个类,但是它不支持或增强测试,因为测试实际上没有使用它们的 self 参数做任何事情。最后,需要两行固定不变的代码,这样才能从命令行运行这个测试。有使用 unittest 经验的用户可能认为,上面的示例应该使用 TruthTest 类从 TestCase 类继承的测试方法。例如,他们会建议使用 assertEqual(),而不是手工测试是否相等的 assert 语句,在这种情况下测试会使用 self 而不是忽略它:# alternate version of the TestTrue method
def testTrue(self):
self.assertEqual(True, 1)
...对这个建议有三条反对意见。首先,调用方法会影响可读性。尽管 assertEqual() 方法名能够表明要测试两个值是否相等,但是代码看起来仍然不像是比较,对于熟悉 Python 语言的开发人员,不如 Python == 操作符那么明确。第二,正如在本系列的第三篇文章中将看到的,新的测试框架现在知道如何检查 assert 语句,从而查明造成测试失败的条件,这意味着简单的 assert 语句现在能够产生有意义的测试失败消息,它提供的信息与调用 assertEqual() 等老方法的结果差不多。最后,即使 assertEqual() 仍然是必要的,但是从测试模块导入这个函数(而不是通过类继承让函数可用)肯定更简单,更符合 Python 的风格。实际上,在下面会看到,当 py.test 和 nose 要提供更多用来支持测试的例程时,它们只需把这些例程定义为函数,然后用户可以把这些函数导入自己的代码。当然,如果作者确实需要通过例程缓存状态,以便以后在测试用例中使用,unittest 子类仍然是有意义的,py.test 和 nose 完全支持它们。另外,目前许多 Python 测试编写为 Python 标准库支持的 doctest,它们不需要使用函数或类:Doctest For The Above Example
-----------------------------
The truth values in Python, named "True" and "False",
are equivalent to the Boolean numbers one and zero.
&&& True == 1
&&& False == 0
True但是,如果程序员希望编写简单的测试代码,不愿意考虑 doctest 涉及的乱七八糟的东西,那么测试函数是很好的方法。总之,测试函数可以极大地增强编写测试的简便性。程序员不需要记住、重写或复制以前编写的测试代码,新的约定让 Python 程序员能够像编写一般 Python 代码一样编写测试:只需打开一个空文件,然后输入!框架特有的约定py.test 和 nose 框架都提供特殊的例程,这些例程可以简化测试的编写。可以认为它们分别提供一种方便的测试 “方言”,可以用这些 “方言” 编写测试。这会简化测试的编写并减少错误,还会使测试更简短、可读性更好。但是,使用这些例程还会导致一个重要的后果:您的测试与提供函数的框架捆绑在一起了,丧失了兼容性。因此,要权衡考虑方便性和兼容性。如果只使用笨拙的标准 Python unittest 模块从头编写所有测试,那么它们能够在任何测试框架中运行。更进一步,如果采用简单的做法编写测试函数(如上所述),那么测试至少能够在 py.test 和 nose 中运行。但是,如果开始使用某个测试框架特有的特性,那么如果以后另一个框架开发出了新的重要特性,您决定进行框架迁移,就必须重写测试。py.test 和 nose 都为 TestCase 的 assertRaises() 方法提供了替代品。py.test 提供的版本比较新颖,它也可以接受要执行的字符串,这更强大,因为可以测试引发异常的表达式,而不只是函数调用:# conveniences.py
import math
import py.test
py.test.raises(OverflowError, math.log, 0)
py.test.raises(ValueError, math.sqrt, -1)
py.test.raises(ZeroDivisionError, "1 / 0")
import nose.tools
nose.tools.assert_raises(OverflowError, math.log, 0)
nose.tools.assert_raises(ValueError, math.sqrt, -1)
# No equivalent for third example!但是,除了都能够测试异常之外,这两种框架的差异就比较大了。py.test 只提供一个简便函数,它用来判断特定调用是否会触发 DeprecationWarning:
py.test.deprecated_call(my.old.function, arg1, arg2)另一方面,nose 提供非常丰富的断言函数,适用于希望避免 assert 语句和需要进行比较复杂的测试的情况。详细信息请参考它的文档,下面列出 nose 提供的断言函数:# nose.tools support functions for writing tests
assert_almost_equal(first, second, places=7, msg=None)
assert_almost_equals(first, second, places=7, msg=None)
assert_equal(first, second, msg=None)
assert_equals(first, second, msg=None)
assert_false(expr, msg=None)
assert_not_almost_equal(first, second, places=7, msg=None)
assert_not_almost_equals(first, second, places=7, msg=None)
assert_not_equal(first, second, msg=None)
assert_not_equals(first, second, msg=None)
assert_true(expr, msg=None)
eq_(a, b, msg=None)
ok_(expr, msg=None)在处理浮点数时,如果希望测试能够灵活地对待 Python 实现,允许对浮点数的处理有细小的误差,那么上面检查近似值的例程尤其有意义。分布式测试目前,测试的运行频率越来越高了。许多团队已经采用了连续测试,也就是对团队版本控制系统的每次签入(check-in)都要运行项目测试。随着测试驱动开发方法越来越流行,许多开发人员在开始编写新模块的代码之前先为模块编写和运行测试。如果测试的运行时间很长,就会严重影响开发人员的生产力。因此,用尽可能多的计算能力运行测试是很有益处的。对于小规模项目,这可能意味着使用计算机的所有 CPU 核运行多个测试进程。对于更大的项目,要配置完整的测试计算机群,要么使用专用服务器并行地运行测试,要么使用所有开发人员工作站的空闲时间。在并行和分布式测试方面,本文讨论的三种测试框架有非常显著的差异:zope.testing 命令行有一个 -j 选项,它指定应该启动多个测试进程,而不是在同一进程中执行所有测试。因为每个进程可以在不同的 CPU 核上运行,所以如果在有四个 CPU 的计算机上运行 -j 4,就可以同时用四个 CPU 运行测试。nose 项目报告说,他们已经把对并行测试的支持提交到项目 trunk,但是一般用户要等到下一个版本才能试用这个特性。py.test 工具支持一个多处理选项 (-n),可以像 zope.testing 一样在多个 CPU 核上运行测试。另外,它还提供管理工具,可以在整个测试服务器群中分布测试。在这三种框架中,py.test 看起来在并行测试方面明显领先了。可以指定多个 --tx 选项,每个选项描述要运行测试的一个环境或远程服务器。而且,它实际上支持针对两个完全不同的原因分布测试!在使用 --dist=load 时,它将使用服务器群按照传统方式在多台计算机上运行测试,从而减少测试花费的时间。但是,在使用 dist=each 时,它的做法就比较复杂了;它确保每个测试在 py.test 可用的每个测试环境中运行。这意味着 py.test 可以同时在多个 Python 解释器版本和多个操作系统上运行测试。因此,如果项目支持多个平台,希望测试解决方案能够自动地支持多平台,而不需要通过编写脚本把测试复制到不同的平台并运行它们,那么 py.test 的这个特性是非常吸引人的。定制和可扩展性这三种测试框架都为单独的用户和整个项目提供定制能力,可以根据需要选择测试框架的行为和选项。在 Zope 包中,指定默认选项的 buildout 常常调用 zope.testing 模块。这意味着运行测试的开发人员会得到统一的结果集。但是,如果在项目级上选择的行为无法满足他们的需要,他们仍然可以指定自己的命令行开关。nose 框架通过用户主目录中的 nose.cfg 或 .noserc 文件支持用户个性化定制,用户可以在这些文件中指定测试结果的显示方式。对于 py.test 和 nose 框架,都可以提供针对整个项目的选项。py.test 框架会在它测试的项目中寻找 conftest.py 文件,然后在这个文件中寻找针对整个项目的选项,比如是否检测并运行 doctest 以及应该使用哪种模式检测测试文件和函数。nose 框架寻找项目范围的 setup.cfg 文件(这是提供 Python 包的相关信息的标准方式),然后在其中寻找 [nosetests] 节。另外,py.test 和 nose 都支持插件,这些用户提供的模块可以安装新的命令行选项和在工具中添加新行为,但是它们提供的配置和能够实现的功能有差异。结束语在过去,每个 Python 项目都使用自己的习惯做法;采用新一代 Python 测试框架,就能够提供简洁的习惯做法和统一的测试技术。 要开始研究每种框架实现的测试机制,也就是它们用来搜索测试模块和测试文件的技术。请继续阅读下一篇文章。
参考资料 :了解关于这种流行的工具的更多信息。 :支持与 py.test 相同的测试方法。:提供一种发现和运行测试的统一方法。
可以通过 Python 标准库附带的文档查找关于
的最新信息。
:这个 Python 模块用于在 Python 执行期间度量代码覆盖。:这是一个 Python 代码覆盖分析工具。
为 _hotshot C 模块提供更好的界面。:为 Zope 3 项目提供测试设置。 是一个 Python 应用程序构建系统。 :描述如何使用 Distutils 建立 Python 模块和扩展。 :developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
浏览关于这些主题和其他技术主题的图书。
参与 AIX 和 UNIX 论坛:
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
为灾难恢复构建应用,赢取现金大奖。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=AIX and UNIXArticleID=398577ArticleTitle=Python 测试框架: 用 Python 测试框架简化测试publish-date=

我要回帖

更多关于 钢筋骨架是什么意思 的文章

 

随机推荐