test
— Regression tests package for PythonPython回归测试包¶
Note
The test
package is meant for internal use by Python only. test
包只供Python内部使用。It is documented for the benefit of the core developers of Python. 它是为了Python的核心开发人员而编写的。Any use of this package outside of Python’s standard library is discouraged as code mentioned here can change or be removed without notice between releases of Python.不鼓励在Python的标准库之外使用此包,因为这里提到的代码可以在Python的不同版本之间更改或删除,恕不另行通知。
The test
package contains all regression tests for Python as well as the modules test.support
and test.regrtest
. test
包包含Python的所有回归测试以及模块test.support
和test.regrtest
。test.support
is used to enhance your tests while 用于在test.regrtest
drives the testing suite.test.regrtest
驱动测试套件时增强测试。
Each module in the test
package whose name starts with test_
is a testing suite for a specific module or feature. test
包中名称以test_
开头的每个模块都是特定模块或功能的测试套件。All new tests should be written using the 所有新的测试都应该使用unittest
or doctest
module. unittest
或doctest
模块编写。Some older tests are written using a “traditional” testing style that compares output printed to 一些旧的测试是使用“传统”测试风格编写的,它将打印到sys.stdout
; this style of test is considered deprecated.sys.stdout
的输出进行比较;这种类型的测试被认为是不推荐的。
See also
Writing Unit Tests for the test
package为test
包编写单元测试¶
test
packageIt is preferred that tests that use the 使用unittest
module follow a few guidelines. unittest
模块的测试最好遵循一些准则。One is to name the test module by starting it with 一种是通过以test_
and end it with the name of the module being tested. test_
开头并以被测试模块的名称结束来命名测试模块。The test methods in the test module should start with 测试模块中的测试方法应以test_
and end with a description of what the method is testing. test_
开始,并以方法测试内容的描述结束。This is needed so that the methods are recognized by the test driver as test methods. 这是必要的,以便测试驱动程序将这些方法识别为测试方法。Also, no documentation string for the method should be included. 此外,不应包含该方法的文档字符串。A comment (such as 注释(如# Tests function returns only True or False
) should be used to provide documentation for test methods. # Tests function returns only True or False
)应用于提供测试方法的文档。This is done because documentation strings get printed out if they exist and thus what test is being run is not stated.这样做是因为文档字符串在存在时会打印出来,因此没有说明正在运行什么测试。
A basic boilerplate is often used:通常使用基本样板:
import unittest
from test import support
class MyTestCase1(unittest.TestCase):
# Only use setUp() and tearDown() if necessary
def setUp(self):
... code to execute in preparation for tests ...
def tearDown(self):
... code to execute to clean up after tests ...
def test_feature_one(self):
# Test feature one.
... testing code ...
def test_feature_two(self):
# Test feature two.
... testing code ...
... more test methods ...
class MyTestCase2(unittest.TestCase):
... same structure as MyTestCase1 ...
... more test classes ...
if __name__ == '__main__':
unittest.main()
This code pattern allows the testing suite to be run by 此代码模式允许test.regrtest
, on its own as a script that supports the unittest
CLI, or via the python -m unittest
CLI.test.regrtest
单独运行测试套件,将其作为支持unittest
CLI的脚本运行,或通过python -m unittest
CLI运行。
The goal for regression testing is to try to break code. 回归测试的目标是尝试破坏代码。This leads to a few guidelines to be followed:这就需要遵循一些准则:
The testing suite should exercise all classes, functions, and constants.测试套件应使用所有类、函数和常量。This includes not just the external API that is to be presented to the outside world but also “private” code.这不仅包括要呈现给外部世界的外部API,还包括“私有”代码。Whitebox testing (examining the code being tested when the tests are being written) is preferred.首选白盒测试(在编写测试时检查正在测试的代码)。Blackbox testing (testing only the published user interface) is not complete enough to make sure all boundary and edge cases are tested.黑盒测试(仅测试已发布的用户界面)不够完整,无法确保测试所有边界和边缘情况。Make sure all possible values are tested including invalid ones.确保测试了所有可能的值,包括无效值。This makes sure that not only all valid values are acceptable but also that improper values are handled correctly.这确保不仅所有有效值都是可接受的,而且正确处理不正确的值。Exhaust as many code paths as possible.尽可能多地排出代码路径。Test where branching occurs and thus tailor input to make sure as many different paths through the code are taken.测试分支发生的位置,从而调整输入,以确保通过代码的路径尽可能多。Add an explicit test for any bugs discovered for the tested code.为测试代码中发现的任何错误添加显式测试。This will make sure that the error does not crop up again if the code is changed in the future.这将确保在将来更改代码时不会再次出现错误。Make sure to clean up after your tests (such as close and remove all temporary files).确保在测试后进行清理(例如关闭并删除所有临时文件)。If a test is dependent on a specific condition of the operating system then verify the condition already exists before attempting the test.如果测试依赖于操作系统的特定条件,则在尝试测试之前验证该条件是否已存在。Import as few modules as possible and do it as soon as possible.导入尽可能少的模块,并尽快完成。This minimizes external dependencies of tests and also minimizes possible anomalous behavior from side-effects of importing a module.这最小化了测试的外部依赖性,也最小化了导入模块的副作用可能导致的异常行为。Try to maximize code reuse.尽量最大化代码重用。On occasion, tests will vary by something as small as what type of input is used.有时,测试会因使用哪种类型的输入而有所不同。Minimize code duplication by subclassing a basic test class with a class that specifies the input:通过使用指定输入的类子类化基本测试类来最小化代码重复:class TestFuncAcceptsSequencesMixin:
func = mySuperWhammyFunction
def test_func(self):
self.func(self.arg)
class AcceptLists(TestFuncAcceptsSequencesMixin, unittest.TestCase):
arg = [1, 2, 3]
class AcceptStrings(TestFuncAcceptsSequencesMixin, unittest.TestCase):
arg = 'abc'
class AcceptTuples(TestFuncAcceptsSequencesMixin, unittest.TestCase):
arg = (1, 2, 3)When using this pattern, remember that all classes that inherit from使用此模式时,请记住从unittest.TestCase
are run as tests.unittest.TestCase
继承的所有类都作为测试运行。The上面示例中的Mixin
class in the example above does not have any data and so can’t be run by itself, thus it does not inherit fromunittest.TestCase
.Mixin
类没有任何数据,因此不能单独运行,因此它不会从unittest.TestCase
继承。
See also另见
Test Driven Development测试驱动开发A book by Kent Beck on writing tests before code.Kent Beck写的一本关于在编写代码之前编写测试的书。
Running tests using the command-line interface使用命令行界面运行测试¶
The test
package can be run as a script to drive Python’s regression test suite, thanks to the -m
option: python -m test. test
包可以作为脚本运行,以驱动Python的回归测试套件,这要归功于-m
选项:Python-m测试。Under the hood, it uses 在发动机罩下,它使用test.regrtest
; the call python -m test.regrtest used in previous Python versions still works. test.regrtest
;在以前的python版本中使用的调用python -m test.gregtest仍然有效。Running the script by itself automatically starts running all regression tests in the 单独运行脚本会自动开始运行test
package. test
包中的所有回归测试。It does this by finding all modules in the package whose name starts with 它通过查找包中名称以test_
, importing them, and executing the function test_main()
if present or loading the tests via unittest.TestLoader.loadTestsFromModule if test_main
does not exist. test_
开头的所有模块,导入它们,并执行函数test_main()
(如果test_main
存在),或者通过unittest.TestLoader.loadTestsFromModule加载测试(如果test_main
不存在)。The names of tests to execute may also be passed to the script. Specifying a single regression test (python -m test test_spam) will minimize output and only print whether the test passed or failed.
Running 直接运行test
directly allows what resources are available for tests to use to be set. test
允许设置可供测试使用的资源。You do this by using the 您可以使用-u
command-line option. -u
命令行选项来执行此操作。Specifying 指定all
as the value for the -u
option enables all possible resources: python -m test -uall. all
作为-u
选项的值将启用所有可能的资源:python-m test -ual。If all but one resource is desired (a more common case), a comma-separated list of resources that are not desired may be listed after 如果只需要一个资源(更常见的情况),则可以在all
. all
后面列出不需要的资源的逗号分隔列表。The command python -m test -uall,-audio,-largefile will run 命令python -m test -uall,-audio,-largefile将使用除test
with all resources except the audio
and largefile
resources. audio
和largefile
资源之外的所有资源运行test
。For a list of all resources and more command-line options, run python -m test -h.要获得所有资源和更多命令行选项的列表,请运行python -m test -h。
Some other ways to execute the regression tests depend on what platform the tests are being executed on. 执行回归测试的其他一些方式取决于测试在哪个平台上执行。On Unix, you can run make test at the top-level directory where Python was built. 在Unix上,您可以在构建Python的顶级目录下运行make test。On Windows, executing rt.bat from your 在Windows上,从PCbuild
directory will run all regression tests.PCbuild
目录执行rt.bat将运行所有回归测试。
test.support
— Utilities for the Python test suitePython测试套件的实用程序¶
The test.support
module provides support for Python’s regression test suite.test.support
模块为Python的回归测试套件提供支持。
Note
test.support
is not a public module. 不是公共模块。It is documented here to help Python developers write tests. 这里记录了它,以帮助Python开发人员编写测试。The API of this module is subject to change without backwards compatibility concerns between releases.此模块的API可能会更改,版本之间不会存在向后兼容性问题。
This module defines the following exceptions:
-
exception
test.support.
TestFailed
¶ Exception to be raised when a test fails. This is deprecated in favor of测试失败时引发的异常。为了支持基于unittest
-based tests andunittest.TestCase
’s assertion methods.unittest
的测试和unittest.TestCase
的断言方法,这是不推荐的。
-
exception
test.support.
ResourceDenied
¶ Subclass ofunittest.SkipTest
.unittest.SkipTest
的子类。Raised when a resource (such as a network connection) is not available.当资源(如网络连接)不可用时引发。Raised by the由requires()
function.requires()
函数引发。
The test.support
module defines the following constants:test.support
模块定义以下常量:
-
test.support.
verbose
¶ 启用详细输出时为True
when verbose output is enabled.True
。Should be checked when more detailed information is desired about a running test.当需要关于运行测试的更详细信息时,应检查。verboseis set by由test.regrtest
.test.regrtest
设置。
-
test.support.
is_jython
¶ 如果运行的解释器是Jython,则为True
if the running interpreter is Jython.True
。
-
test.support.
is_android
¶ 如果系统是Android,则为True
if the system is Android.True
。
-
test.support.
unix_shell
¶ Path for shell if not on Windows; otherwise外壳的路径(如果不在Windows上);否则为None
.None
。
-
test.support.
LOOPBACK_TIMEOUT
¶ Timeout in seconds for tests using a network server listening on the network local loopback interface like使用网络服务器侦听网络本地环回接口(如127.0.0.1
.127.0.0.1
)的测试超时(秒)。The timeout is long enough to prevent test failure: it takes into account that the client and the server can run in different threads or even different processes.超时时间足够长,可以防止测试失败:它考虑到客户端和服务器可以在不同的线程甚至不同的进程中运行。The timeout should be long enough for对于connect()
,recv()
andsend()
methods ofsocket.socket
.socket.socket
的connect()
、recv()
和send()
方法,超时应该足够长。Its default value is 5 seconds.其默认值为5秒。See also另请参见INTERNET_TIMEOUT
.INTERNET_TIMEOUT
。
-
test.support.
INTERNET_TIMEOUT
¶ Timeout in seconds for network requests going to the internet.网络请求到internet的超时(秒)。The timeout is short enough to prevent a test to wait for too long if the internet request is blocked for whatever reason.超时时间足够短,以防止在internet请求因任何原因被阻止时测试等待太长时间。Usually, a timeout using通常,使用INTERNET_TIMEOUT
should not mark a test as failed, but skip the test instead: seetransient_internet()
.INTERNET_TIMEOUT
的超时不应将测试标记为失败,而应跳过测试:请参阅transient_internet()
。Its default value is 1 minute.
See also
LOOPBACK_TIMEOUT
.
-
test.support.
SHORT_TIMEOUT
¶ Timeout in seconds to mark a test as failed if the test takes “too long”.如果测试花费“太长”,则将测试标记为失败的超时(秒)。The timeout value depends on the regrtest超时值取决于regrtest--timeout
command line option.--timeout
命令行选项。If a test using如果使用SHORT_TIMEOUT
starts to fail randomly on slow buildbots, useLONG_TIMEOUT
instead.SHORT_TIMEOUT
的测试在慢速构建机器人上开始随机失败,请改用LONG_TIMEOUT
。Its default value is 30 seconds.其默认值为30秒。
-
test.support.
LONG_TIMEOUT
¶ Timeout in seconds to detect when a test hangs.检测测试何时挂起的超时(秒)。It is long enough to reduce the risk of test failure on the slowest Python buildbots.它足够长,可以降低最慢的Python构建机器人上测试失败的风险。It should not be used to mark a test as failed if the test takes “too long”.如果测试时间“过长”,则不应将其标记为失败。The timeout value depends on the regrtest超时值取决于regrtest--timeout
command line option.--timeout
命令行选项。Its default value is 5 minutes.其默认值为5分钟。See also另请参阅LOOPBACK_TIMEOUT
,INTERNET_TIMEOUT
andSHORT_TIMEOUT
.LOOPBACK_TIMEOUT
、INTERNET_TIMEOUT
和SHORT_TIMEOUT
。
-
test.support.
PGO
¶ Set when tests can be skipped when they are not useful for PGO.设置当测试对PGO不可用时可以跳过测试的时间。
-
test.support.
PIPE_MAX_SIZE
¶ A constant that is likely larger than the underlying OS pipe buffer size, to make writes blocking.一个可能大于底层操作系统管道缓冲区大小的常数,用于阻止写入。
-
test.support.
SOCK_MAX_SIZE
¶ A constant that is likely larger than the underlying OS socket buffer size, to make writes blocking.一个可能大于底层操作系统套接字缓冲区大小的常数,用于阻止写入。
-
test.support.
TEST_SUPPORT_DIR
¶ Set to the top level directory that contains设置为包含test.support
.test.support
的顶级目录。
-
test.support.
TEST_HOME_DIR
¶ Set to the top level directory for the test package.设置为测试包的顶级目录。
-
test.support.
TEST_DATA_DIR
¶ Set to the设置为测试包中的data
directory within the test package.data
目录。
-
test.support.
MAX_Py_ssize_t
¶ Set to对于大内存测试,设置为sys.maxsize
for big memory tests.sys.maxsize
。
-
test.support.
max_memuse
¶ Set by通过set_memlimit()
as the memory limit for big memory tests.set_memlimit()
设置为大内存测试的内存限制。Limited by受MAX_Py_ssize_t
.MAX_Py_ssize_t
限制。
-
test.support.
real_max_memuse
¶ Set by通过set_memlimit()
as the memory limit for big memory tests.set_memlimit()
设置为大内存测试的内存限制。Not limited by不受MAX_Py_ssize_t
.MAX_Py_ssize_t
限制。
-
test.support.
MISSING_C_DOCSTRINGS
¶ Return如果在CPython上运行,而不是在Windows上运行,并且配置未设置为True
if running on CPython, not on Windows, and configuration not set withWITH_DOC_STRINGS
.WITH_DOC_STRINGS
,则返回True
。
-
test.support.
HAVE_DOCSTRINGS
¶ Check for presence of docstrings.检查是否存在文档字符串。
-
test.support.
TEST_HTTP_URL
¶ Define the URL of a dedicated HTTP server for the network tests.为网络测试定义专用HTTP服务器的URL。
-
test.support.
ALWAYS_EQ
¶ Object that is equal to anything. Used to test mixed type comparison.等于任何东西的对象。用于测试混合类型比较。
-
test.support.
NEVER_EQ
¶ Object that is not equal to anything (even to对象不等于任何值(甚至等于ALWAYS_EQ
).ALWAYS_EQ
)。Used to test mixed type comparison.用于测试混合类型比较。
-
test.support.
LARGEST
¶ Object that is greater than anything (except itself). Used to test mixed type comparison.大于任何东西(除自身外)的对象。用于测试混合类型比较。
-
test.support.
SMALLEST
¶ Object that is less than anything (except itself). Used to test mixed type comparison.小于任何值(除了自身)的对象。用于测试混合类型比较。
The test.support
module defines the following functions:test.support
模块定义了以下功能:
-
test.support.
is_resource_enabled
(resource)¶ Return
True
if resource is enabled and available. The list of available resources is only set whentest.regrtest
is executing the tests.
-
test.support.
python_is_optimized
()¶ Return如果Python不是用True
if Python was not built with-O0
or-Og
.-O0
或-Og
构建的,则返回True
。
-
test.support.
with_pymalloc
()¶ Return返回_testcapi.WITH_PYMALLOC
._testcapi.WITH_PYMALLOC
。
-
test.support.
requires
(resource, msg=None)¶ Raise
ResourceDenied
if resource is not available. msg is the argument toResourceDenied
if it is raised. Always returnsTrue
if called by a function whose__name__
is'__main__'
. Used when tests are executed bytest.regrtest
.
-
test.support.
system_must_validate_cert
(f)¶ Raise
unittest.SkipTest
on TLS certification validation failures.
-
test.support.
sortdict
(dict)¶ Return a repr of dict with keys sorted.返回已排序关键字的dict的repr。
-
test.support.
findfile
(filename, subdir=None)¶ Return the path to the file named filename. If no match is found filename is returned. This does not equal a failure since it could be the path to the file.
Setting subdir indicates a relative path to use to find the file rather than looking directly in the path directories.
-
test.support.
match_test
(test)¶ Match test to patterns set in
set_match_tests()
.
-
test.support.
set_match_tests
(patterns)¶ Define match test with regular expression patterns.
-
test.support.
run_unittest
(*classes)¶ Execute
unittest.TestCase
subclasses passed to the function. The function scans the classes for methods starting with the prefixtest_
and executes the tests individually.It is also legal to pass strings as parameters; these should be keys in
sys.modules
. Each associated module will be scanned byunittest.TestLoader.loadTestsFromModule()
. This is usually seen in the followingtest_main()
function:def test_main():
support.run_unittest(__name__)This will run all tests defined in the named module.这将运行命名模块中定义的所有测试。
-
test.support.
run_doctest
(module, verbosity=None, optionflags=0)¶ Run
doctest.testmod()
on the given module. Return(failure_count, test_count)
.If verbosity is
None
,doctest.testmod()
is run with verbosity set toverbose
. Otherwise, it is run with verbosity set toNone
. optionflags is passed asoptionflags
todoctest.testmod()
.
-
test.support.
setswitchinterval
(interval)¶ Set the
sys.setswitchinterval()
to the given interval. Defines a minimum interval for Android systems to prevent the system from hanging.
-
test.support.
check_impl_detail
(**guards)¶ Use this check to guard CPython’s implementation-specific tests or to run them only on the implementations guarded by the arguments:使用此检查来保护CPython的特定于实现的测试,或者仅在由参数保护的实现上运行这些测试:check_impl_detail() # Only on CPython (default).
check_impl_detail(jython=True) # Only on Jython.
check_impl_detail(cpython=False) # Everywhere except CPython.
-
test.support.
set_memlimit
(limit)¶ Set the values for
max_memuse
andreal_max_memuse
for big memory tests.
-
test.support.
record_original_stdout
(stdout)¶ Store the value from stdout. It is meant to hold the stdout at the time the regrtest began.
-
test.support.
get_original_stdout
()¶ Return the original stdout set by
record_original_stdout()
orsys.stdout
if it’s not set.
-
test.support.
args_from_interpreter_flags
()¶ Return a list of command line arguments reproducing the current settings in返回在sys.flags
andsys.warnoptions
.sys.flags
和sys.warnoptions
中再现当前设置的命令行参数列表。
-
test.support.
optim_args_from_interpreter_flags
()¶ Return a list of command line arguments reproducing the current optimization settings in返回在sys.flags
.sys.flags
中再现当前优化设置的命令行参数列表。
-
test.support.
captured_stdin
()¶ -
test.support.
captured_stdout
()¶ -
test.support.
captured_stderr
()¶ A context managers that temporarily replaces the named stream with
io.StringIO
object.Example use with output streams:用于输出流的示例:with captured_stdout() as stdout, captured_stderr() as stderr:
print("hello")
print("error", file=sys.stderr)
assert stdout.getvalue() == "hello\n"
assert stderr.getvalue() == "error\n"Example use with input stream:与输入流一起使用的示例:with captured_stdin() as stdin:
stdin.write('hello\n')
stdin.seek(0)
# call test code that consumes from sys.stdin
captured = input()
self.assertEqual(captured, "hello")
-
test.support.
disable_faulthandler
()¶ A context manager that replaces
sys.stderr
withsys.__stderr__
.
-
test.support.
gc_collect
()¶ Force as many objects as possible to be collected. This is needed because timely deallocation is not guaranteed by the garbage collector. This means that
__del__
methods may be called later than expected and weakrefs may remain alive for longer than expected.
-
test.support.
disable_gc
()¶ A context manager that disables the garbage collector upon entry and reenables it upon exit.上下文管理器,在进入时禁用垃圾收集器,在退出时重新启用垃圾收集器。
-
test.support.
swap_attr
(obj, attr, new_val)¶ Context manager to swap out an attribute with a new object.上下文管理器将属性与新对象交换。Usage:
with swap_attr(obj, "attr", 5):
...This will set
obj.attr
to 5 for the duration of thewith
block, restoring the old value at the end of the block. Ifattr
doesn’t exist onobj
, it will be created and then deleted at the end of the block.The old value (or
None
if it doesn’t exist) will be assigned to the target of the “as” clause, if there is one.
-
test.support.
swap_item
(obj, attr, new_val)¶ Context manager to swap out an item with a new object.上下文管理器将项与新对象交换。Usage:
with swap_item(obj, "item", 5):
...This will set
obj["item"]
to 5 for the duration of thewith
block, restoring the old value at the end of the block. Ifitem
doesn’t exist onobj
, it will be created and then deleted at the end of the block.The old value (or
None
if it doesn’t exist) will be assigned to the target of the “as” clause, if there is one.
-
test.support.
print_warning
(msg)¶ Print a warning into
sys.__stderr__
. Format the message as:f"Warning -- {msg}"
. If msg is made of multiple lines, add"Warning -- "
prefix to each line.New in version 3.9.版本3.9中新增。
-
test.support.
wait_process
(pid, *, exitcode, timeout=None)¶ Wait until process pid completes and check that the process exit code is exitcode.等待进程pid完成,并检查进程退出代码是否为exitcode。Raise an
AssertionError
if the process exit code is not equal to exitcode.If the process runs longer than timeout seconds (
SHORT_TIMEOUT
by default), kill the process and raise anAssertionError
. The timeout feature is not available on Windows.New in version 3.9.版本3.9中新增。
-
test.support.
calcobjsize
(fmt)¶ Return
struct.calcsize()
fornP{fmt}0n
or, ifgettotalrefcount
exists,2PnP{fmt}0P
.
-
test.support.
calcvobjsize
(fmt)¶ Return
struct.calcsize()
fornPn{fmt}0n
or, ifgettotalrefcount
exists,2PnPn{fmt}0P
.
-
test.support.
checksizeof
(test, o, size)¶ For testcase test, assert that the
sys.getsizeof
for o plus the GC header size equals size.
-
@
test.support.
anticipate_failure
(condition)¶ A decorator to conditionally mark tests with
unittest.expectedFailure()
. Any use of this decorator should have an associated comment identifying the relevant tracker issue.
-
@
test.support.
run_with_locale
(catstr, *locales)¶ A decorator for running a function in a different locale, correctly resetting it after it has finished.用于在不同区域设置中运行函数,并在完成后正确重置该函数的修饰符。catstris the locale category as a string (for example是字符串形式的区域设置类别(例如“LC_ALL”)。"LC_ALL"
).The locales passed will be tried sequentially, and the first valid locale will be used.传递的locales将按顺序尝试,并将使用第一个有效的区域设置。
-
@
test.support.
run_with_tz
(tz)¶ A decorator for running a function in a specific timezone, correctly resetting it after it has finished.用于在特定时区中运行函数,并在完成后正确重置函数的修饰符。
-
@
test.support.
requires_freebsd_version
(*min_version)¶ Decorator for the minimum version when running test on FreeBSD.在FreeBSD上运行测试时最低版本的装饰器。If the FreeBSD version is less than the minimum, raiseunittest.SkipTest
.
-
@
test.support.
requires_linux_version
(*min_version)¶ Decorator for the minimum version when running test on Linux.在Linux上运行测试时的最低版本的装饰器。If the Linux version is less than the minimum, raiseunittest.SkipTest
.
-
@
test.support.
requires_mac_version
(*min_version)¶ Decorator for the minimum version when running test on macOS.在macOS上运行测试时的最低版本的装饰器。If the macOS version is less than the minimum, raiseunittest.SkipTest
.
-
@
test.support.
requires_IEEE_754
¶ Decorator for skipping tests on non-IEEE 754 platforms.用于跳过非IEEE 754平台上的测试的装饰器。
-
@
test.support.
requires_zlib
¶ Decorator for skipping tests if如果zlib
doesn’t exist.zlib
不存在,则跳过测试的装饰器。
-
@
test.support.
requires_resource
(resource)¶ Decorator for skipping tests if resource is not available.用于在资源不可用时跳过测试的装饰器。
-
@
test.support.
requires_docstrings
¶ Decorator for only running the test if
HAVE_DOCSTRINGS
.
-
@
test.support.
cpython_only
(test)¶ Decorator for tests only applicable to CPython.仅适用于CPython的测试装饰器。
-
@
test.support.
impl_detail
(msg=None, **guards)¶ Decorator for invoking
check_impl_detail()
on guards.If that returns如果返回False
, then uses msg as the reason for skipping the test.False
,则使用msg作为跳过测试的原因。
-
@
test.support.
no_tracing
(func)¶ Decorator to temporarily turn off tracing for the duration of the test.在测试期间临时关闭跟踪的装饰器。
-
@
test.support.
refcount_test
(test)¶ Decorator for tests which involve reference counting.涉及引用计数的测试的装饰器。The decorator does not run the test if it is not run by CPython.如果不是由CPython运行,则装饰器不会运行测试。Any trace function is unset for the duration of the test to prevent unexpected refcounts caused by the trace function.在测试期间,任何跟踪函数都会被取消设置,以防止跟踪函数导致意外的引用计数。
-
@
test.support.
bigmemtest
(size, memuse, dry_run=True)¶ Decorator for bigmem tests.bigmem测试的装饰器。size is a requested size for the test (in arbitrary, test-interpreted units.) memuse is the number of bytes per unit for the test, or a good estimate of it. For example, a test that needs two byte buffers, of 4 GiB each, could be decorated with
@bigmemtest(size=_4G, memuse=2)
.The size argument is normally passed to the decorated test method as an extra argument. If dry_run is
True
, the value passed to the test method may be less than the requested value. If dry_run isFalse
, it means the test doesn’t support dummy runs when-M
is not specified.
-
@
test.support.
bigaddrspacetest
(f)¶ Decorator for tests that fill the address space.填充地址空间的测试的装饰器。fis the function to wrap.是要包装的函数。
-
test.support.
check_syntax_error
(testcase, statement, errtext='', *, lineno=None, offset=None)¶ Test for syntax errors in statement by attempting to compile statement. testcase is the
unittest
instance for the test. errtext is the regular expression which should match the string representation of the raisedSyntaxError
. If lineno is notNone
, compares to the line of the exception. If offset is notNone
, compares to the offset of the exception.
-
test.support.
open_urlresource
(url, *args, **kw)¶ Open url. If open fails, raises
TestFailed
.
-
test.support.
reap_children
()¶ Use this at the end of
test_main
whenever sub-processes are started. This will help ensure that no extra children (zombies) stick around to hog resources and create problems when looking for refleaks.
-
test.support.
get_attribute
(obj, name)¶ Get an attribute, raising
unittest.SkipTest
ifAttributeError
is raised.
-
test.support.
catch_unraisable_exception
()¶ Context manager catching unraisable exception using
sys.unraisablehook()
.Storing the exception value (
cm.unraisable.exc_value
) creates a reference cycle. The reference cycle is broken explicitly when the context manager exits.Storing the object (
cm.unraisable.object
) can resurrect it if it is set to an object which is being finalized. Exiting the context manager clears the stored object.Usage:
with support.catch_unraisable_exception() as cm:
# code creating an "unraisable exception"
...
# check the unraisable exception: use cm.unraisable
...
# cm.unraisable attribute no longer exists at this point
# (to break a reference cycle)New in version 3.8.版本3.8中新增。
-
test.support.
load_package_tests
(pkg_dir, loader, standard_tests, pattern)¶ Generic implementation of the
unittest
load_tests
protocol for use in test packages. pkg_dir is the root directory of the package; loader, standard_tests, and pattern are the arguments expected byload_tests
. In simple cases, the test package’s__init__.py
can be the following:import os
from test.support import load_package_tests
def load_tests(*args):
return load_package_tests(os.path.dirname(__file__), *args)
-
test.support.
detect_api_mismatch
(ref_api, other_api, *, ignore=())¶ Returns the set of attributes, functions or methods of ref_api not found on other_api, except for a defined list of items to be ignored in this check specified in ignore.
By default this skips private attributes beginning with ‘_’ but includes all magic methods, i.e. those starting and ending in ‘__’.
New in version 3.5.版本3.5中新增。
-
test.support.
patch
(test_instance, object_to_patch, attr_name, new_value)¶ Override object_to_patch.attr_name with new_value. Also add cleanup procedure to test_instance to restore object_to_patch for attr_name. The attr_name should be a valid attribute for object_to_patch.
-
test.support.
run_in_subinterp
(code)¶ Run code in subinterpreter. Raise
unittest.SkipTest
iftracemalloc
is enabled.
-
test.support.
check_free_after_iterating
(test, iter, cls, args=())¶ Assert that iter is deallocated after iterating.断言迭代后iter已解除分配。
-
test.support.
missing_compiler_executable
(cmd_names=[])¶ Check for the existence of the compiler executables whose names are listed in cmd_names or all the compiler executables when cmd_names is empty and return the first missing executable or
None
when none is found missing.
-
test.support.
check__all__
(test_case, module, name_of_module=None, extra=(), not_exported=())¶ Assert that the断言module的__all__
variable of module contains all public names.__all__
变量包含所有公共名称。The module’s public names (its API) are detected automatically based on whether they match the public name convention and were defined in module.模块的公共名称(其API)将根据它们是否符合公共名称约定并在module中定义而自动检测。The name_of_module argument can specify (as a string or tuple thereof) what module(s) an API could be defined in order to be detected as a public API. One case for this is when module imports part of its public API from other modules, possibly a C backend (like
csv
and its_csv
).The extra argument can be a set of names that wouldn’t otherwise be automatically detected as “public”, like objects without a proper额外的参数可以是一组名称,否则不会自动检测为“public”,就像没有适当的__module__属性的对象。__module__
attribute.If provided, it will be added to the automatically detected ones.如果提供,它将被添加到自动检测的数据中。The not_exported argument can be a set of names that must not be treated as part of the public API even though their names indicate otherwise.not_exported参数可以是一组名称,这些名称不能作为公共API的一部分,即使它们的名称另有指示。Example use:使用示例:import bar
import foo
import unittest
from test import support
class MiscTestCase(unittest.TestCase):
def test__all__(self):
support.check__all__(self, foo)
class OtherTestCase(unittest.TestCase):
def test__all__(self):
extra = {'BAR_CONST', 'FOO_CONST'}
not_exported = {'baz'} # Undocumented name.
# bar imports part of its API from _bar.
support.check__all__(self, bar, ('bar', '_bar'),
extra=extra, not_exported=not_exported)New in version 3.6.版本3.6中新增。
-
test.support.
skip_if_broken_multiprocessing_synchronize
()¶ Skip tests if the如果缺少multiprocessing.synchronize
module is missing, if there is no available semaphore implementation, or if creating a lock raises anOSError
.multiprocessing.synchronize
模块,如果没有可用的信号量实现,或者如果创建锁会引发OSError
,则跳过测试。New in version 3.10.版本3.10中新增。
-
test.support.
check_disallow_instantiation
(test_case, tp, *args, **kwds)¶ Assert that type tp cannot be instantiated using args and kwds.断言不能使用args和kwds实例化类型tp。New in version 3.10.版本3.10中新增。
The test.support
module defines the following classes:test.support
模块定义了以下类:
-
class
test.support.
SuppressCrashReport
¶ A context manager used to try to prevent crash dialog popups on tests that are expected to crash a subprocess.上下文管理器,用于尝试防止在预期将使子进程崩溃的测试上出现崩溃对话框。On Windows, it disables Windows Error Reporting dialogs using SetErrorMode.在Windows上,它使用SetErrorMode禁用Windows错误报告对话框。On UNIX,在UNIX上,resource.setrlimit()
is used to setresource.RLIMIT_CORE
’s soft limit to 0 to prevent coredump file creation.resource.setrlimit()
用于将resource.RLIMIT_CORE
的软限制设置为0,以防止创建coredump文件。On both platforms, the old value is restored by在两个平台上,旧值都由__exit__()
.__exit__()
恢复。
-
class
test.support.
SaveSignals
¶ Class to save and restore signal handlers registered by the Python signal handler.类来保存和恢复Python信号处理程序注册的信号处理程序。
test.support.socket_helper
— Utilities for socket tests套接字测试的实用程序¶
The test.support.socket_helper
module provides support for socket tests.test.support.socket_helper
模块提供对套接字测试的支持。
New in version 3.9.版本3.9中新增。
-
test.support.socket_helper.
IPV6_ENABLED
¶ Set to如果在此主机上启用了IPv6,则设置为True
if IPv6 is enabled on this host,False
otherwise.True
,否则设置为False
。
-
test.support.socket_helper.
find_unused_port
(family=socket.AF_INET, socktype=socket.SOCK_STREAM)¶ Returns an unused port that should be suitable for binding.返回应适合绑定的未使用端口。This is achieved by creating a temporary socket with the same family and type as thesock
parameter (default isAF_INET
,SOCK_STREAM
), and binding it to the specified host address (defaults to0.0.0.0
) with the port set to 0, eliciting an unused ephemeral port from the OS.The temporary socket is then closed and deleted, and the ephemeral port is returned.然后关闭并删除临时套接字,并返回临时端口。Either this method or
bind_port()
should be used for any tests where a server socket needs to be bound to a particular port for the duration of the test. Which one to use depends on whether the calling code is creating a Python socket, or if an unused port needs to be provided in a constructor or passed to an external program (i.e. the-accept
argument to openssl’s s_server mode). Always preferbind_port()
overfind_unused_port()
where possible.Using a hard coded port is discouraged since it can make multiple instances of the test impossible to run simultaneously, which is a problem for buildbots.不鼓励使用硬编码端口,因为它会使测试的多个实例无法同时运行,这对于构建机器人来说是一个问题。
-
test.support.socket_helper.
bind_port
(sock, host=HOST)¶ Bind the socket to a free port and return the port number.将套接字绑定到空闲端口并返回端口号。Relies on ephemeral ports in order to ensure we are using an unbound port.依赖临时端口,以确保我们使用的是未绑定端口。This is important as many tests may be running simultaneously, especially in a buildbot environment.这很重要,因为许多测试可能同时运行,特别是在buildbot环境中。This method raises an exception if thesock.family
isAF_INET
andsock.type
isSOCK_STREAM
, and the socket hasSO_REUSEADDR
orSO_REUSEPORT
set on it.Tests should never set these socket options for TCP/IP sockets.测试不应为TCP/IP套接字设置这些套接字选项。The only case for setting these options is testing multicasting via multiple UDP sockets.设置这些选项的唯一情况是通过多个UDP套接字测试多播。Additionally, if the此外,如果SO_EXCLUSIVEADDRUSE
socket option is available (i.e. on Windows), it will be set on the socket.SO_EXCLUSIVEADDRUSE
套接字选项可用(即在Windows上),它将在套接字上设置。This will prevent anyone else from binding to our host/port for the duration of the test.这将防止任何其他人在测试期间绑定到主机/端口。
-
test.support.socket_helper.
bind_unix_socket
(sock, addr)¶ Bind a unix socket, raising绑定unix套接字,如果引发unittest.SkipTest
ifPermissionError
is raised.PermissionError
,则引发unittest.SkipTest
。
-
@
test.support.socket_helper.
skip_unless_bind_unix_socket
¶ A decorator for running tests that require a functional用于运行需要Unix套接字的函数bind()
for Unix sockets.bind()
的测试的修饰符。
-
test.support.socket_helper.
transient_internet
(resource_name, *, timeout=30.0, errnos=())¶ A context manager that raises当internet连接的各种问题表现为异常时,上下文管理器会引发ResourceDenied
when various issues with the internet connection manifest themselves as exceptions.ResourceDenied
。
test.support.script_helper
— Utilities for the Python execution testsPython执行测试的实用程序¶
The test.support.script_helper
module provides support for Python’s script execution tests.test.support.script_helper
模块为Python的脚本执行测试提供支持。
-
test.support.script_helper.
interpreter_requires_environment
()¶ Return如果True
ifsys.executable interpreter
requires environment variables in order to be able to run at all.sys.executable interpreter
需要环境变量才能运行,则返回True
。This is designed to be used with
@unittest.skipIf()
to annotate tests that need to use anassert_python*()
function to launch an isolated mode (-I
) or no environment mode (-E
) sub-interpreter process.A normal build & test does not run into this situation but it can happen when trying to run the standard library test suite from an interpreter that doesn’t have an obvious home with Python’s current home finding logic.正常的构建和测试不会遇到这种情况,但当试图从一个解释器运行标准库测试套件时,可能会发生这种情况,该解释器没有明显的Python当前主查找逻辑。Setting
PYTHONHOME
is one way to get most of the testsuite to run in that situation.PYTHONPATH
orPYTHONUSERSITE
are other common environment variables that might impact whether or not the interpreter can start.
-
test.support.script_helper.
run_python_until_end
(*args, **env_vars)¶ Set up the environment based on env_vars for running the interpreter in a subprocess.基于env_vars设置环境,以便在子进程中运行解释器。The values can include这些值可以包括__isolated
,__cleanenv
,__cwd
, andTERM
.__isolated
、__cleanenv
、__cwd
和TERM
。Changed in version 3.9:版本3.9中更改:The function no longer strips whitespaces from stderr.该函数不再从stderr中删除空格。
-
test.support.script_helper.
assert_python_ok
(*args, **env_vars)¶ Assert that running the interpreter with args and optional environment variables env_vars succeeds (
rc == 0
) and return a(return code, stdout, stderr)
tuple.If the如果设置了__cleanenv
keyword is set, env_vars is used as a fresh environment.__cleannev
关键字,则将env_vars用作新环境。Python is started in isolated mode (command line optionPython在隔离模式下启动(命令行选项-I
), except if the__isolated
keyword is set toFalse
.-I
),除非__isolated
关键字设置为False
。Changed in version 3.9:版本3.9中更改:The function no longer strips whitespaces from stderr.该函数不再从stderr中删除空格。
-
test.support.script_helper.
assert_python_failure
(*args, **env_vars)¶ Assert that running the interpreter with args and optional environment variables env_vars fails (断言使用args和可选环境变量env_vars运行解释器失败(rc != 0
) and return a(return code, stdout, stderr)
tuple.rc != 0
),并返回(return code, stdout, stderr)
元组。See有关更多选项,请参阅assert_python_ok()
for more options.assert_python_ok()
。Changed in version 3.9:版本3.9中更改:The function no longer strips whitespaces from stderr.该函数不再从stderr中删除空格。
-
test.support.script_helper.
spawn_python
(*args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, **kw)¶ Run a Python subprocess with the given arguments.使用给定的参数运行Python子进程。kw is extra keyword args to pass to
subprocess.Popen()
. Returns asubprocess.Popen
object.
-
test.support.script_helper.
kill_python
(p)¶ Run the given运行给定的subprocess.Popen
process until completion and return stdout.subprocess.Popen
进程,直到完成并返回标准输出。
-
test.support.script_helper.
make_script
(script_dir, script_basename, source, omit_suffix=False)¶ Create script containing source in path script_dir and script_basename. If omit_suffix is
False
, append.py
to the name. Return the full script path.
-
test.support.script_helper.
make_zip_script
(zip_dir, zip_basename, script_name, name_in_zip=None)¶ Create zip file at zip_dir and zip_basename with extension
zip
which contains the files in script_name. name_in_zip is the archive name. Return a tuple containing(full path, full path of archive name)
.
-
test.support.script_helper.
make_pkg
(pkg_dir, init_source='')¶ Create a directory named pkg_dir containing an
__init__
file with init_source as its contents.
-
test.support.script_helper.
make_zip_pkg
(zip_dir, zip_basename, pkg_name, script_basename, source, depth=1, compiled=False)¶ Create a zip package directory with a path of zip_dir and zip_basename containing an empty
__init__
file and a file script_basename containing the source. If compiled isTrue
, both source files will be compiled and added to the zip package.Return a tuple of the full zip path and the archive name for the zip file.返回zip文件的完整zip路径和存档名称的元组。
test.support.bytecode_helper
— Support tools for testing correct bytecode generation支持测试正确字节码生成的工具¶
The test.support.bytecode_helper
module provides support for testing and inspecting bytecode generation.test.support.bytecode_helper
模块为测试和检查字节码生成提供支持。
New in version 3.9.版本3.9中新增。
The module defines the following class:该模块定义了以下类:
-
class
test.support.bytecode_helper.
BytecodeTestCase
(unittest.TestCase)¶ This class has custom assertion methods for inspecting bytecode.此类具有用于检查字节码的自定义断言方法。
-
BytecodeTestCase.
get_disassembly_as_string
(co)¶ Return the disassembly of co as string.将co的反汇编作为字符串返回。
-
BytecodeTestCase.
assertInBytecode
(x, opname, argval=_UNSPECIFIED)¶ Return instr if opname is found, otherwise throws如果找到opname,则返回instr,否则抛出AssertionError
.AssertionError
。
-
BytecodeTestCase.
assertNotInBytecode
(x, opname, argval=_UNSPECIFIED)¶ Throws如果找到opname,则抛出AssertionError
if opname is found.AssertionError
。
test.support.threading_helper
— Utilities for threading tests线程测试实用程序¶
The test.support.threading_helper
module provides support for threading tests.test.support.threading_helper
模块提供对线程测试的支持。
New in version 3.10.版本3.10中新增。
-
test.support.threading_helper.
join_thread
(thread, timeout=None)¶ Join a thread within timeout. Raise an
AssertionError
if thread is still alive after timeout seconds.
-
@
test.support.threading_helper.
reap_threads
(func)¶ Decorator to ensure the threads are cleaned up even if the test fails.Decorator,以确保即使测试失败也能清理线程。
-
test.support.threading_helper.
start_threads
(threads, unlock=None)¶ Context manager to start threads.启动threads的上下文管理器。It attempts to join the threads upon exit.它尝试在退出时加入线程。
-
test.support.threading_helper.
threading_cleanup
(*original_values)¶ Cleanup up threads not specified in original_values.清除original_values中未指定的线程。Designed to emit a warning if a test leaves running threads in the background.设计用于在测试将运行线程留在后台时发出警告。
-
test.support.threading_helper.
threading_setup
()¶ Return current thread count and copy of dangling threads.返回当前线程计数和挂起线程的副本。
-
test.support.threading_helper.
wait_threads_exit
(timeout=None)¶ Context manager to wait until all threads created in the上下文管理器等待,直到with
statement exit.with
语句中创建的所有线程退出。
-
test.support.threading_helper.
catch_threading_exception
()¶ Context manager catching上下文管理器正在使用threading.Thread
exception usingthreading.excepthook()
.threading.excepthook()
捕获threading.Thread
异常。Attributes set when an exception is caught:捕获异常时设置的属性:exc_type
exc_value
exc_traceback
thread
See请参阅threading.excepthook()
documentation.threading.excepthook()
文档。These attributes are deleted at the context manager exit.这些属性将在上下文管理器出口处删除。Usage:
with threading_helper.catch_threading_exception() as cm:
# code spawning a thread which raises an exception
...
# check the thread exception, use cm attributes:
# exc_type, exc_value, exc_traceback, thread
...
# exc_type, exc_value, exc_traceback, thread attributes of cm no longer
# exists at this point
# (to avoid reference cycles)New in version 3.8.版本3.8中新增。
test.support.os_helper
— Utilities for os tests操作系统测试实用程序¶
The test.support.os_helper
module provides support for os tests.test.support.os_helper
模块为os测试提供支持。
New in version 3.10.版本3.10中新增。
-
test.support.os_helper.
FS_NONASCII
¶ A non-ASCII character encodable by可由os.fsencode()
.os.fsencode()
编码的非ASCII字符。
-
test.support.os_helper.
SAVEDCWD
¶ Set to设置为os.getcwd()
.os.getcwd()
。
-
test.support.os_helper.
TESTFN
¶ Set to a name that is safe to use as the name of a temporary file.设置为可安全用作临时文件名的名称。Any temporary file that is created should be closed and unlinked (removed).创建的任何临时文件都应关闭并取消链接(删除)。
-
test.support.os_helper.
TESTFN_NONASCII
¶ Set to a filename containing the设置为包含FS_NONASCII
character.FS_NONASCII
字符的文件名。
-
test.support.os_helper.
TESTFN_UNENCODABLE
¶ Set to a filename (str type) that should not be able to be encoded by file system encoding in strict mode.设置为文件名(str类型),该文件名不能在严格模式下通过文件系统编码进行编码。It may be如果无法生成这样的文件名,则可能为None
if it’s not possible to generate such a filename.None
。
-
test.support.os_helper.
TESTFN_UNDECODABLE
¶ Set to a filename (bytes type) that should not be able to be decoded by file system encoding in strict mode.设置为一个文件名(字节类型),该文件名不能在严格模式下通过文件系统编码进行解码。It may be如果无法生成这样的文件名,则可能为None
if it’s not possible to generate such a filename.None
。
-
test.support.os_helper.
TESTFN_UNICODE
¶ Set to a non-ASCII name for a temporary file.设置为临时文件的非ASCII名称。
-
class
test.support.os_helper.
EnvironmentVarGuard
¶ Class used to temporarily set or unset environment variables.类,用于临时设置或取消设置环境变量。Instances can be used as a context manager and have a complete dictionary interface for querying/modifying the underlying实例可以用作上下文管理器,并具有完整的字典接口,用于查询/修改底层os.environ
.os.environ
。After exit from the context manager all changes to environment variables done through this instance will be rolled back.退出上下文管理器后,将回滚通过该实例对环境变量所做的所有更改。Changed in version 3.1:版本3.1中更改:Added dictionary interface.添加字典接口。
-
class
test.support.os_helper.
FakePath
(path)¶ Simple path-like object. It implements the
__fspath__()
method which just returns the path argument.If path is an exception, it will be raised in如果path是异常,将在__fspath__()
.__fspath__()
中引发。
-
EnvironmentVarGuard.
set
(envvar, value)¶ Temporarily set the environment variable暂时将环境变量envvar
to the value ofvalue
.envvar
设置为value
的值。
-
EnvironmentVarGuard.
unset
(envvar)¶ Temporarily unset the environment variable暂时取消设置环境变量envvar
.envvar
。
-
test.support.os_helper.
can_symlink
()¶ Return如果操作系统支持符号链接,则返回True
if the OS supports symbolic links,False
otherwise.True
,否则返回False
。
-
test.support.os_helper.
can_xattr
()¶ Return如果操作系统支持xattr,则返回True
if the OS supports xattr,False
otherwise.True
,否则返回False
。
-
test.support.os_helper.
change_cwd
(path, quiet=False)¶ A context manager that temporarily changes the current working directory to path and yields the directory.将当前工作目录临时更改为path并生成目录的上下文管理器。If quiet is如果quiet为False
, the context manager raises an exception on error.False
,则上下文管理器在出错时引发异常。Otherwise, it issues only a warning and keeps the current working directory the same.否则,它只发出警告并保持当前工作目录不变。
-
test.support.os_helper.
create_empty_file
(filename)¶ Create an empty file with filename.创建一个文件名为filename的空文件。If it already exists, truncate it.如果它已经存在,则将其截断。
-
test.support.os_helper.
fd_count
()¶ Count the number of open file descriptors.计算打开的文件描述符的数量。
-
test.support.os_helper.
fs_is_case_insensitive
(directory)¶ Return如果directory的文件系统不区分大小写,则返回True
if the file system for directory is case-insensitive.True
。
-
test.support.os_helper.
make_bad_fd
()¶ Create an invalid file descriptor by opening and closing a temporary file, and returning its descriptor.通过打开和关闭临时文件并返回其描述符,创建无效的文件描述符。
-
test.support.os_helper.
rmdir
(filename)¶ Call对filename调用os.rmdir()
on filename.os.rmdir()
。On Windows platforms, this is wrapped with a wait loop that checks for the existence of the file.在Windows平台上,这是用一个等待循环包装的,用于检查文件的存在。
-
test.support.os_helper.
rmtree
(path)¶ Call
shutil.rmtree()
on path or callos.lstat()
andos.rmdir()
to remove a path and its contents.On Windows platforms, this is wrapped with a wait loop that checks for the existence of the files.在Windows平台上,这是用一个等待循环包装的,用于检查文件的存在。
-
@
test.support.os_helper.
skip_unless_symlink
¶ A decorator for running tests that require support for symbolic links.用于运行需要支持符号链接的测试的修饰符。
-
@
test.support.os_helper.
skip_unless_xattr
¶ A decorator for running tests that require support for xattr.用于运行需要支持xattr的测试的装饰器。
-
test.support.os_helper.
temp_cwd
(name='tempcwd', quiet=False)¶ A context manager that temporarily creates a new directory and changes the current working directory (CWD).临时创建新目录并更改当前工作目录(CWD)的上下文管理器。The context manager creates a temporary directory in the current directory with name name before temporarily changing the current working directory.在临时更改当前工作目录之前,上下文管理器在当前目录中创建一个名为name的临时目录。If name isNone
, the temporary directory is created usingtempfile.mkdtemp()
.If quiet is如果quiet为False
and it is not possible to create or change the CWD, an error is raised.False
,并且无法创建或更改CWD,则会引发错误。Otherwise, only a warning is raised and the original CWD is used.否则,只会发出警告,并使用原始CWD。
-
test.support.os_helper.
temp_dir
(path=None, quiet=False)¶ A context manager that creates a temporary directory at path and yields the directory.上下文管理器,用于在path处创建临时目录并生成该目录。If path is
None
, the temporary directory is created usingtempfile.mkdtemp()
. If quiet isFalse
, the context manager raises an exception on error. Otherwise, if path is specified and cannot be created, only a warning is issued.
-
test.support.os_helper.
temp_umask
(umask)¶ A context manager that temporarily sets the process umask.临时设置进程umask的上下文管理器。
-
test.support.os_helper.
unlink
(filename)¶ Call
os.unlink()
on filename.On Windows platforms, this is wrapped with a wait loop that checks for the existence of the file.在Windows平台上,这是用一个等待循环包装的,用于检查文件的存在。
test.support.import_helper
— Utilities for import tests导入测试的实用程序¶
The test.support.import_helper
module provides support for import tests.test.support.import_helper
模块提供对导入测试的支持。
New in version 3.10.版本3.10中新增。
-
test.support.import_helper.
forget
(module_name)¶ Remove the module named module_name from从sys.modules
and delete any byte-compiled files of the module.sys.modules
中删除名为module_name的模块,并删除该模块的所有字节编译文件。
-
test.support.import_helper.
import_fresh_module
(name, fresh=(), blocked=(), deprecated=False)¶ This function imports and returns a fresh copy of the named Python module by removing the named module from此函数通过在导入之前从sys.modules
before doing the import.sys.modules
中删除命名模块,导入并返回命名Python模块的新副本。Note that unlike请注意,与reload()
, the original module is not affected by this operation.reload()
不同,原始模块不受此操作的影响。fresh is an iterable of additional module names that are also removed from thefresh是一个可迭代的附加模块名称,这些名称在导入之前也会从sys.modules
cache before doing the import.sys.modules
缓存中删除。blocked is an iterable of module names that are replaced withblocked是在导入过程中模块缓存中替换为None
in the module cache during the import to ensure that attempts to import them raiseImportError
.None
的模块名称的可迭代项,以确保尝试导入它们会引发ImportError
。The named module and any modules named in the fresh and blocked parameters are saved before starting the import and then reinserted into在开始导入之前,将保存命名的模块以及在fresh和blocked参数中命名的任何模块,然后在新的导入完成后重新插入sys.modules
when the fresh import is complete.sys.modules
。Module and package deprecation messages are suppressed during this import if deprecated is如果deprecated为True
.True
,则在此导入期间将抑制模块和包的建议弃用消息。This function will raise如果无法导入命名模块,此函数将引发ImportError
if the named module cannot be imported.ImportError
。Example use:使用示例:# Get copies of the warnings module for testing without affecting the
# version being used by the rest of the test suite. One copy uses the
# C implementation, the other is forced to use the pure Python fallback
# implementation
py_warnings = import_fresh_module('warnings', blocked=['_warnings'])
c_warnings = import_fresh_module('warnings', fresh=['_warnings'])New in version 3.1.版本3.1中新增。
-
test.support.import_helper.
import_module
(name, deprecated=False, *, required_on())¶ This function imports and returns the named module.此函数导入并返回命名模块。Unlike a normal import, this function raises与正常导入不同,如果无法导入模块,此函数将引发unittest.SkipTest
if the module cannot be imported.unittest.SkipTest
。Module and package deprecation messages are suppressed during this import if deprecated is
True
. If a module is required on a platform but optional for others, set required_on to an iterable of platform prefixes which will be compared againstsys.platform
.New in version 3.1.版本3.1中新增。
-
test.support.import_helper.
modules_setup
()¶ Return a copy of
sys.modules
.
-
test.support.import_helper.
modules_cleanup
(oldmodules)¶ Remove modules except for oldmodules and删除除oldmodules和encodings
in order to preserve internal cache.encodings
之外的模块,以保留内部缓存。
-
test.support.import_helper.
unload
(name)¶ Delete name from
sys.modules
.
-
test.support.import_helper.
make_legacy_pyc
(source)¶ Move a PEP 3147/PEP 488 pyc file to its legacy pyc location and return the file system path to the legacy pyc file.将PEP 3147/PEP 488 pyc文件移动到其旧式pyc位置,并将文件系统路径返回到旧式PY文件。The source value is the file system path to the source file.source值是源文件的文件系统路径。It does not need to exist, however the PEP 3147/488 pyc file must exist.它不需要存在,但是PEP 3147/488 pyc文件必须存在。
-
class
test.support.import_helper.
CleanImport
(*module_names)¶ A context manager to force import to return a new module reference.用于强制导入以返回新模块引用的上下文管理器。This is useful for testing module-level behaviors, such as the emission of a DeprecationWarning on import.这对于测试模块级行为非常有用,例如在导入时发出弃用警告。Example usage:示例用法:with CleanImport('foo'):
importlib.import_module('foo') # New reference.
-
class
test.support.import_helper.
DirsOnSysPath
(*paths)¶ A context manager to temporarily add directories to sys.path.用于将目录临时添加到sys.path
的上下文管理器。This makes a copy of这将创建sys.path
, appends any directories given as positional arguments, then revertssys.path
to the copied settings when the context ends.sys.path
的副本,附加作为位置参数提供的任何目录,然后在上下文结束时将sys.path
还原为复制的设置。Note that all请注意,上下文管理器主体中的所有sys.path
modifications in the body of the context manager, including replacement of the object, will be reverted at the end of the block.sys.path
修改(包括对象的替换)将在块的末尾恢复。
test.support.warnings_helper
— Utilities for warnings tests警告测试实用程序¶
The test.support.warnings_helper
module provides support for warnings tests.test.support.warnings_helper
模块提供对警告测试的支持。
New in version 3.10.版本3.10中新增。
-
test.support.warnings_helper.
check_no_resource_warning
(testcase)¶ Context manager to check that no上下文管理器检查是否未引发ResourceWarning
was raised.ResourceWarning
。You must remove the object which may emit必须在上下文管理器结束之前删除可能发出ResourceWarning
before the end of the context manager.ResourceWarning
的对象。
-
test.support.warnings_helper.
check_syntax_warning
(testcase, statement, errtext='', *, lineno=1, offset=None)¶ Test for syntax warning in statement by attempting to compile statement. Test also that the
SyntaxWarning
is emitted only once, and that it will be converted to aSyntaxError
when turned into error. testcase is theunittest
instance for the test. errtext is the regular expression which should match the string representation of the emittedSyntaxWarning
and raisedSyntaxError
.If lineno is not如果lineno不是None
, compares to the line of the warning and exception.None
,则与警告和异常的行进行比较。If offset is not如果offset不是None
, compares to the offset of the exception.None
,则与异常的偏移量进行比较。New in version 3.8.版本3.8中新增。
-
test.support.warnings_helper.
check_warnings
(*filters, quiet=True)¶ A convenience wrapper for
warnings.catch_warnings()
that makes it easier to test that a warning was correctly raised. It is approximately equivalent to callingwarnings.catch_warnings(record=True)
withwarnings.simplefilter()
set toalways
and with the option to automatically validate the results that are recorded.check_warnings
accepts 2-tuples of the form("message regexp", WarningCategory)
as positional arguments. If one or more filters are provided, or if the optional keyword argument quiet isFalse
, it checks to make sure the warnings are as expected: each specified filter must match at least one of the warnings raised by the enclosed code or the test fails, and if any warnings are raised that do not match any of the specified filters the test fails. To disable the first of these checks, set quiet toTrue
.If no arguments are specified, it defaults to:如果未指定参数,则默认为:check_warnings(("", Warning), quiet=True)
In this case all warnings are caught and no errors are raised.在这种情况下,将捕获所有警告,不会引发任何错误。On entry to the context manager, a
WarningRecorder
instance is returned. The underlying warnings list fromcatch_warnings()
is available via the recorder object’swarnings
attribute. As a convenience, the attributes of the object representing the most recent warning can also be accessed directly through the recorder object (see example below).If no warning has been raised, then any of the attributes that would otherwise be expected on an object representing a warning will return如果未引发任何警告,则表示警告的对象上预期的任何属性都将返回None
.None
。The recorder object also has a记录器对象还有一个reset()
method, which clears the warnings list.reset()
方法,用于清除警告列表。The context manager is designed to be used like this:上下文管理器的设计用途如下:with check_warnings(("assertion is always true", SyntaxWarning),
("", UserWarning)):
exec('assert(False, "Hey!")')
warnings.warn(UserWarning("Hide me!"))In this case if either warning was not raised, or some other warning was raised,在这种情况下,如果未引发警告,或者引发了其他警告,则check_warnings()
would raise an error.check_warnings()
将引发错误。When a test needs to look more deeply into the warnings, rather than just checking whether or not they occurred, code like this can be used:当测试需要更深入地查看警告,而不仅仅是检查它们是否发生时,可以使用以下代码:with check_warnings(quiet=True) as w:
warnings.warn("foo")
assert str(w.args[0]) == "foo"
warnings.warn("bar")
assert str(w.args[0]) == "bar"
assert str(w.warnings[0].args[0]) == "foo"
assert str(w.warnings[1].args[0]) == "bar"
w.reset()
assert len(w.warnings) == 0Here all warnings will be caught, and the test code tests the captured warnings directly.这里将捕获所有警告,测试代码直接测试捕获的警告。Changed in version 3.2:版本3.2中更改: New optional arguments filters and quiet.
-
class
test.support.warnings_helper.
WarningsRecorder
¶ Class used to record warnings for unit tests. See documentation of
check_warnings()
above for more details.