词条 | Module:Convert/tester/doc |
释义 |
This module runs unit tests to compare template output with expected text. In addition, the module can output the results of expanding templates. While intended for testing Convert, the tester should be useful with other templates that require many tests using a simple format for the test input. Testcases example
It is not necessary to save the testcases page before viewing test results. For example, Convert/sandbox/testcases could be edited to change the tests. While still editing that page, paste {{nowrap|" The testcases talk page (for example, Convert/sandbox/testcases) contains: {{#invoke:convert/sandbox/testcases|run_tests}} The testcases module page (for example, Convert/sandbox/testcases) may contain: local tests = [==[A template to be tested must be at the start of a line.Lines which do not start with a template are ignored.{{convert/sandbox|1|acre|lk=on}} 1 [[acre]] (0.40 [[hectare|ha]]){{convert/sandbox|1|m2|acres|lk=on}} 1 [[square metre]] (0.00025 [[acre]]s){{convert/sandbox|0.16|/l|2|disp=table}} align="right"|0.16\|align="right"|0.61]==]local p = require('Module:Convert/tester')p.tests = testsreturn p If wanted, the tests can be run using a template different from the one specified in the tests. For example, the following would run the tests from Convert/sandbox/testcases, but would change the name of each template found on that page to " {{#invoke:convert/sandbox/testcases|run_tests|template=convert/sandbox2}} FormatTests are extracted from a multiline string. Any line that does not start with a template is ignored. Each processed line starts with a template, and is followed by whitespace, then the wikitext which should result from expanding the template. The expected output must be entered in a single line. If the template outputs multiple lines, those lines must be joined with "\" (two characters—backslash The templates do not have to be the same, for example, the following tests would work: local tests = [==[{{convert|12|m}} 12 metres (39 ft){{convert/sandbox|12|m}} 12 metres (39 ft){{age|1989|7|23|2003|7|14}} 13{{age in days|2007|5|24|2008|4|23}} 335]==] In the results, the status column shows "Pass" if the output from the template exactly matches the expected text. If there is no expected text, the template output is shown in the Actual column with a blank status. If the given expected text differs from the template output, the template output is shown in the Actual column with status "Fail", and the number of fails is shown at the top of the page. Searching the page for "Fail" will find each problem. Any "Fail" result is followed by a row showing the nowiki actual and expected wikitext. Specifying testsIf using a testcases module (as in the above example), the test text is assigned to Alternatively, the test text can be read from any page, or from any section on any page. For example, the following wikitext could be entered in a sandbox: == Mixed tests ==<pre>{{convert|12|m}} 12 metres (39 ft){{convert/sandbox|0.16|/l|2|disp=table}} align="right"|0.16\|align="right"|0.61{{age in days|2007|5|24|2008|4|23}} 335--- The following line is incorrect to demonstrate a "fail".{{convert|12|m|lk=on}} 12 [[meter|metres]] (39 [[Foot|ft]])The following line demonstrates the result when no expected text is provided.{{convert/sandbox|1|-|5|in|mm|lk=on}}</pre> Given the above, the tests can be run as shown in the following section. Instead of specifying the tests with a multiline string, it is possible to assign a table to local tests = { -- Each test item is of form { template, expected }. { '{{convert|12|m}}', '12 metres (39 ft)' }, { '{{convert/sandbox|0.16|/l|2|disp=table}}', 'align="right"|0.16\|align="right"|0.61' }, { '{{age in days|2007|5|24|2008|4|23}}', '335' }, { '{{convert|12|m|lk=on}}', '12 [[meter|metres]] (39 [[Foot|ft]])' }, { '{{convert/sandbox|1|-|5|in|mm|lk=on}}' },}local p = require('Module:Convert/tester')p.tests = testsreturn p This example provides the same results as the multiline string at "Mixed tests" above. Running tests from any pageEntering either of the following lines of wikitext in a sandbox or talk page would run the tests found at the specified location. The first line would show all tests on page "Template talk:Example", while the second would show only those tests on that page that are in the "Mixed tests" section. {{#invoke:convert/tester|run_tests|page=Template talk:Example}}{{#invoke:convert/tester|run_tests|page=Template talk:Example|section=Mixed tests}} As a demonstration, the following line is used to produce the table shown below, including the comment that starts with three dashes. {{#invoke:convert/tester|run_tests|page=Module:Convert/tester/doc|section=Specifying tests|show=all}}{{#invoke:convert/tester|run_tests|page=Module:Convert/tester/doc|section=Specifying tests|show=all}} Making expected resultsFunction {{#invoke:convert/tester|make_tests|page=Template talk:Example}}{{#invoke:convert/tester|make_tests|page=Template talk:Example|show=all}} When using If As a demonstration, the following line is used to produce the text shown below. {{#invoke:convert/tester|make_tests|page=Module:Convert/tester/doc|section=Specifying tests}}{{#invoke:convert/tester|make_tests|page=Module:Convert/tester/doc|section=Specifying tests}} Using show=allThe An example using Using Added 12 January 2014.--- The following tests check the widget option.{{example|1|2|widget=on}} ...(expected output)... The table produced by Comparing a module with its sandboxWhen viewing a module, the documentation page is displayed; if the module has a sandbox, the documentation includes "Editors can experiment in this module's sandbox" with a link to diff the module and its sandbox. The tester module provides a For example, the following wikitext could be used. {{#invoke:convert/tester|compare|Example|Example/data}} The names "Example" and "Example/data" do not include a colon ( It is also possible for a module to define pairs of page titles in The result will be a bulleted list, with each lines starting by '*' and ending by a newline for each pair of compared pages. The input lists of pairs may also include items that are a string (instead of a table specifying the pair of pages to compare). That string, which can contain any wikitext, will be output as is as a separate line in the result. You can use it to split a long list into sections with some headings. You can also use it to insert one or more comment lines after the results of comparing a pair (just use a static string starting by '*:' to not break the list, and to indent that comment below). For example it is expected that a sandbox should be different from the non-sandbox version of a template if they are only used to call a module and the only difference should be the name of the sandbox module instead of the normal version of that module. As a convenience, certain keywords are defined in this module: if one of them is recognized, then the actual list of pair comes from the module itself and you don't need to specify a list of pairs. For example, the following uses the "convert" keyword to get the list of pairs of pages related to the Module:Convert. {{#invoke:convert/tester|compare|convert}} The following text is a sample showing output that may result from the above.
}} 1 : Modules for test tools |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。