Download Latest Version PySys-1.3.0.tar.gz (111.6 kB)
Email in envelope

Get an email when there's a new version of PySys System Test Framework

Home / pysys / 0.9.3
Name Modified Size InfoDownloads / Week
Parent folder
PySys-examples.0.9.3.tar.gz 2013-12-11 23.1 kB
PySys-0.9.3.tar.gz 2013-12-11 77.1 kB
README 2013-12-11 26.6 kB
Totals: 3 Items   126.7 kB 0
PySys 0.9.3 Release Notes
=========================

PySys has been written and tested against Python 2.7 and higher. Support 
for Python 3.x is included, where the 2to3.py script is run on install 
time. See installation notes below for more details.


What's new in this release
--------------------------
- Added Darwin as a supported platform. 
- Added the maker tag to the pysysproject file to allow specifiying a 
  custom test maker class, e.g. to create specific run templates etc.
  See the pysysproject.xml file in pysys-examples for more information.
- The make option to pysys.py now accepts the testcase directory to be 
  specified to a value other than the current working directory.


Dependencies
------------
Running on windows requires installation of the pywin32 extensions written 
by Mark Hammond (http://sourceforge.net/projects/pywin32). Running the 
manual tester on unix systems requires the tcl/tk libraries to be installed 
on the host machine and the Python version to be compiled with tcl/tk 
support.


Windows Binary Installation
---------------------------
Installation on windows via the binary distribution bundle is performed by 
downloading the PySys-X.Y.Z.win32.exe installer executable and running. 
Note that a common error on windows is in the execution of the post-install 
script, where an error of the form below is reported;

  close failed in file object destructor:
  sys.excepthook is missing
  lost sys.stderr

If obtained, right click the installer executable in an explorer window, 
and select "Troubleshoot Compatability". Select "Try recommended settings", 
and then "Start the program ...".  


Windows/Unix Source Installation
--------------------------------
To install from source on unix or windows systems you should download the 
source archive and perform the following (use winrar or winzip to unpack 
on windows);

 $ tar zxvpf PySys-X.Y.Z.tar.gz
 $ cd PySys-X.Y.Z
 $ python setup.py build
 $ python setup.py install
 
To install on both windows and unix systems you may need to have root 
privileges on the machine. 


The 'pysys.py' launcher 
-----------------------
PySys installs a launcher script 'pysys.py' as part of the installation 
process to facilitate the management and execution of testcases. On unix 
systems the script is installed into the Python binary directory, e.g. 
/usr/local/bin, and is hence on the default user's path. On windows systems 
the script is installed into the Scripts directory of the Python 
installation, e.g. c:\Python24\Scripts\pysys.py, which is not by default on 
the user's path. To run on windows systems the Scripts directory of the 
Python installation should be added to the user's path to allow direct 
execution of the script. 

After installation, to see the available options to the pysys.py script use 

  $ pysys.py --help
  
The script takes four main top level command line options to it, namely 
'run', 'print', 'make' and 'clean', which are used to run a set of testcases, 
print the meta data for a set of testcases, make a new testcase directory 
structure, or clean all testcase output. For more information on the further 
options available to each add --help after the top level option, e.g. 

  $ pysys.py run --help


Running the samples
-------------------
PySys has a set of basic examples to demonstrate it's use for running 
automated and manual testcases. The samples are distributed in a unix line 
ending friendly tar.gz archive, and a windows line ending friendly zip file. 
To unpack the tests on unix systems use

 $ tar zxvpf PySys-examples.X.Y.Z.tar.gz
 $ cd pysys-examples

To run the testcases, after changing directory to the testcases location, 
perform 
 
 $ pysys.py run  


Release History
---------------

0.9.1 to 0.9.2
--------------
- The method getNextAvailableTCPPort has been added to the 
  pysys.basetest.BaseTest class to allow users to allocate server TCP ports 
  in a robust manner.
- The unix and windows process helpers have been updated to fix handle leaks 
  (defect #11 "ProcessMonitor leaks file handles"), and to delete the stdin 
  queue when processes go away. 

0.9.0 to 0.9.1
--------------
- Fixed issue with the determination of the overall test outcome due to the 
  incorrect use of the inbuilt sorted() function. The issue meant the test
  outcome list was not correctly sorted based on precedent, leading to the 
  incorrect determination of the overall test outcome. 
- Fixed issue in the pysys.basetest on handling FileNotFoundExceptions in 
  the assert* methods. The exception was not being caught, leading to 
  subsequent asserts in the test class not being performed. 

0.8.1 to 0.9.0
--------------
- The PySys framework has been updated to be compliant with conversion to 
  Python 3.x with the 2to3.py conversion script. Installation on Python 3.x 
  is now supported via the source distribution bundle, where the 2to3.py 
  script is run automatically at install time. See details below for 
  installing the source distribution. A binary distribution installer for 
  windows will be included in a later release. 
- There are now separate 32 and 64 bit binary distribution installers for 
  windows. 
- On failure of the assertLineCount method, the log output now contains the 
  returned number and requested condition (tracker #3045931)  
- Each assert method now takes an "assertMessage" parameter to be written
  to the log output on execution (tracker #3045924). See test
  PySys_internal_053 in the example testcases for example usage.
- Added the JUnitXMLResultsWriter to log test results in Apache Ant JUnit 
  XML format (one output file per test per cycle). This is useful for 
  integration into Continuous Integration build systems, e.g. TeamCity. The 
  TextResultsWriter and XMLResultsWriter now support the outputDir property 
  to specify the location to write the output files. See the pysys-examples 
  pysysproject.xml file for more details.
- Added the ability to run suites of pyunit tests wrapped up as a single 
  PySys test. This capability is exposed through the PyUnitTest class 
  contained in the pysys.unit.pyunit module. See the pysys-examples pyunit
  tests for example usage.
- Fix to the unix process helper to correctly set the working directory of 
  child processes in the fork and exec. 
- When running tests in parallel, a value of zero given for the 
  -n|--threads option to the run task of the pysys.py launcher, will set 
  the number of threads to the number of available CPUs.

0.7.6 to 0.8.1
--------------
- Updated the pysys.process.plat-win32.helper.ProcessWrapper module to 
  eliminate the use of threads to collect the stdout and stderr from the 
  process via pipes. The module now directly uses win32file.CreateFile to 
  create file objects to pass to the call to win32process.CreateProcess. 
- Added the <formatters/> element to the pysysproject file. This allows 
  setting the format of the test output to stdout and the runlog in 
  accordance to the format specifiers in the python logging and time 
  modules. For examples of the use of this element, see the pysysproject 
  file included in the PySys examples. 
- Logging of exceptions and failed asserts has been changed from info to 
  warn level (tracker #2784251).
- Added extra debug logging in pysys.utils.filegrep, and pysys.basetest 
  for when performing asserts against a line count in an input file 
  (tracker #2824758).
- The testcase output summary is now printed on termination of the test 
  run via a keyboard interrupt (tracker #2816212).
- The PySys project file now allows assignment of the project root 
  location to a variable which can then be used for later expansion within 
  the file. This allows the definition of project variables to include the 
  full path where this is required, e.g. XSL stylesheets which must use 
  the full path to the file rather than a relative path etc. Note that 
  modules within PySys can reference the project root location directly 
  using PROJECT.root (tracker #2795316). 
- The pysys.baserunner class now passes the -X arguments into the test 
  summary writer setup action to allow logging of the user supplied extra 
  arguments(tracker #2814499). The pysys-log.xsl stylesheet used by the 
  XMLResultsWriter 
  has been updated to display this information in the test summary display. 
- Fixed an issue where when the pysysproject file was missing, defaults 
  for the runner module and the test output summary writer were not being 
  set.

0.7.5 to 0.7.6
--------------
- Fixed a defect in the unix process helper module to correct a file 
  handle leak in the write end of the stdin pipe.

0.6.1 to 0.7.5
--------------
- Added the ability to run tests concurrently through the -n | --threads 
  option to the pysys launcher run target. Tests to be run are placed on a 
  request queue and processed by the designated number of worker threads. 
  The results of each test are then placed on a result queue, collated and 
  displayed in the order in which they would run serially. Depending on 
  the nature of the application under test, the recommended number of 
  threads to designate when using this option is no more than two times 
  the number of CPUs. Note also that care needs to be made when running 
  tests in parallel, so as to ensure no shared resources are accessed 
  in a non-atomic way, e.g using direct references to os.environ() in one 
  test when another test modifies the environment directly etc.
- The constructor to the pysys.baserunner.BaseRunner class was changed to 
  include the threads parameter, i.e.
  
  	def __init__(self, record, purge, cycle, mode, threads, outsubdir, descriptors, xargs)
  	
  This parameter is required for the runner to create the required 
  threadpool before running a set of tests in parallel. Any custom runner 
  classes extending the base runner will need to be updated to incorporate 
  this change. 
- Removed module specific loggers from pysys in order to support running 
  tests in parallel. There is now a single logger used within the 
  framework, and which can be referenced directly from the pysys.constants 
  module. Attached to this logger are two handler types; one for logging 
  to stdout, and one for logging to the run 
  log file saved in the output subdirectory of each test. The sdtout 
  handler is set to only log to stdout from the main thread, whilst the 
  run log file handlers are set to log to the output subdirectory of a 
  test only on the creating thread.
- Added exception handling to the pysys.process.user module when trying to 
  stop all processes on destruction. When a background process takes 
  longer to stop than the default timeout period, the thrown 
  pysys.exceptions.ProcessTimeout exception was uncaught causing abnormal 
  exit from the test run.  

0.6.0 to 0.6.1
--------------
- The clean target has been updated to accept the -a | --all command line 
  option to allow deleting all derived files produced when running a set 
  of testcases, i.e. both the testcase output subdirectory and any 
  compiled testclass modules.
- The waitForSignal method of the ProcessUser class, subclassed by both 
  the BaseTestand BaseRunner classes, has been updated to return a list of 
  match objects on invocation. By using tagged regular expressions in the 
  expr parameter of the method call, this allows retrieval of portions of 
  the matched data e.g. to extract expressions in the file to use later in 
  the validation routines. 
- All references to pysys.constants.TRUE and pysys.constants.FALSE have 
  been replaced by the native Python True and False literals. The values 
  of the constants have been set to True and False respectively so as to 
  maintain backwards compatibility.

0.5.2 to 0.6.0
--------------
- The PySys test and PySys project files have been renamed by default from  
  .pysystest to pysystest.xm, and .pysysproject to pysysproject.xml 
  respectively. Backwards compatability is maintained for the previous 
  file naming convention, though this will be deprecated in a later 
  release; it is strongly advised that the new naming convention is 
  adopted. New tests made using the PySys launcher will by default use the 
  new naming convention. This change was made due to issues on Windows 
  systems displaying and recognising hidden files, and files without 
  specified extensions e.g. within the Eclipse framework, for display in 
  internet browsers etc.
- The clean mode of operation has been added to the pysys.py launcher. This 
  allows removal of testcase output subdirectories, e.g. before importing 
  into a source code control system. The -o option allows specifying the 
  output subdirectory name to be deleted, which defaults to the platform 
  identifier if not specified. 
- The test output summary writer interface has been changed so that the 
  test output is written and updated during the test execution; previously 
  a call to the writer was only made on completion of the test run. This 
  allows monitoring the test output summary during the test execution to 
  monitor the run time status of the tests. 
- Added the XMLFileResultsWriter class to the pysys.writer module. This 
  performs logging of the test output summary in an XML format, suitable
  for display via XLST in a web browser. A simple XSL stylesheet is 
  included with the PySys distribution to provide better display in 
  internet browsers. 
- Added the ability to specifiy custom test output summary writers in the 
  PySys project file via the <writer> tag. For an example see the 
  .pysysproject file in the pysys-examples distribution. Should no 
  <writer> be specified in the project file, the default 
  XMLFileResultsWriter will be used. Multiple writers may be specified in 
  the PySys project file.  
- Added exception logging on parsing errors in the PySys project file, e.g. 
  when the file in badly formed due to invalid XML tokens etc.
- Added variable argument passing to the process.monitor.ProcessMonitor 
  class constructor so that operating specific arguments can be passed 
  into the class on instantiation. The wrapper method 
  pysys.basetest.BaseTest.startProcessMonitor has also been updated to 
  allow pass through of the variable arguments. 
- The win32 process.monitor module has been changed so that on windows 
  systems the percentage CPU usage is not normalised by default by the 
  number of available processors, e.g. on a 4 core processor if 2 cores 
  were fully utilized the CPU usage was previously output as 50% - the 
  change means that the reported usage will now be 200% (a value of 100% 
  indicates that one core is fully utilitised). This makes the output 
  consistent with that reported on unix systems. Should the 
  previous behavior be required the numProcessors argument can be passed 
  to the pysys.basetest.BaseTest.startProcessMonitor method in order to 
  normalise the CPU usage statistics by the number of processors. On 
  windows systems the number of processors can be obtained from the 
  NUM_PROCESSORS environment variable.
- Added comments to the PySys Project file distributed with the example 
  testcases, to detail the possible configuration options.

0.5.1 to 0.5.2
--------------
- The lastgrep method has been added to pysys.utils.filegrep, and the 
  assertLastGrep method has been added to the BaseTest class. This allows 
  test validation to be performed based on regular expression matching on 
  the last line of an input file to the assertLastGrep method.
- The win32 process monitor has been modified to calculate the percentage 
  CPU usage statistics as a sum over all available processors. A CPU usage 
  of 100% represents the process fully utilising all available processors. 
- The win32 process monitor now also logs the handle count of a process.

0.5.0 to 0.5.1
--------------
- Fixed a bug in pysys.process.user.ProcessUser destructor to explicitly 
  set the process list to null to allow process handles to be cleaned up 
  on destruction. This bug only seemed to be exhibited when the process 
  handle of a process returned in the startProcess() method was set as a 
  data attribute to an instance of the class. This handle was then both a 
  data attribute of the class, and was contained in a list data attribute 
  of the class. Under these conditions the handles were not being released 
  correctly.
- The print mode of the pysys.py launcher now supports printing out the 
  test user defined modes, and the printing out of tests that can be run 
  in a given mode.
  
0.4.0 to 0.5.0
--------------
- The OSFAMILY constant has been added to pysys.constants, and takes the 
  value 'windows' on all win32 operating systems, and 'unix' on sunos and 
  linux operating systems. The value of the OSFAMILY can be used within 
  the .pysysproject file using the osfamily attribute to the <property> 
  element. This allows capturing the value to be used in expansion of 
  other properties defined within the project file; see below for an 
  example usage. Should no value be set in a properties file, a default 
  value of "osfamily" is assumed. 
- The .pysysproject file now allows explicitly setting the environment 
  value to be used in expansions via the environment attribute to the 
  <property> element; see 
  below for an example usage. Should no value be set in a properties file, 
  a default value of "env" is assumed (this allows for backwards compatibility).
- The .pysysproject file now takes the file attribute to the <property> 
  element. This allows properties to be read from file, where the 
  properties are specified in the name=value syntax, e.g.
  
    <pysysproject>
      <property environment="env"/>
      <property osfamily="osfamily"/>
      <property file="${osfamily}.properties" />
      <property name="lib" value="${library}_${osfamily}_${version}_${env.USER}.so"/>
    </pysysproject>
  
  where the property file contains the following;
  
     version=1.0
     library=jstore${version}.jar
  
  For more details, see testcase PySys_internal_002 in the 
  pysys-examples/internal area which demonstrates this. 
  
- Fixed the issue of removing zero size files from the output subdirectory 
  on win32 platforms; was due to the stderr and stdout file handles not 
  being properly closed down. Updated the BaseRunner to attempt to remove 
  the zero sized files 3 times to try to avoid race conditions of stopped 
  background processes holding on to the file handles too long before dying.
- The win32 process helper now ensures the environment in which the  
  process runs is converted to unicode to avoid issues encountered with 
  running under certain locales. 

0.3.5 to 0.4.0
--------------
- The pysys.process.ProcessUser class has been added to define an 
  interface to subclasses which use the underlying process helper classes. 
  Both the BaseTest and BaseRunner classes now extend this so as to 
  provide a common interface for process manipulation. A common paradigm 
  for creating extension modules to PySys is to create a helper class 
  which provides the methods for starting an interacting with the 
  application under test (AUT). These helper classes have a call back to 
  an instance of the ProcessUser so that it can make use of the high level 
  process methods. As both the BaseTest and BaseRunner classes are 
  instances of the ProcessUser, the extension module helper classes can be 
  used in extensions to both of these to allow the AUT to be started both 
  within a testcase, and within the runner.
- The method signature to the pysys.utils.filereplace replace method has 
  been changed to set the default value for the marker to the empty string
- Bugs fixes for cleaning up leakage of threads from the process helpers, 
  and file handle leakage from the base runner classes.

0.3.4 to 0.3.5
--------------
- Fixed a bug a testcase was not being marked as BLOCKED when unable to 
  start a process using the process helper module.
- Failure on the assertOrderedGrep now prints out the line the failure 
  occurred on.

0.3.3 to 0.3.4
--------------
- Fixed a bug where timedout processes started in the foreground were not 
  being stopped automatically at the end of the testcase.
  
0.3.2 to 0.3.3
--------------
- The default name of the PySys test descriptor file has been changed from 
  "descriptor.xml", to ".pysystest". This change is to maintain a consistent
  naming convention across configuration files within the framework, e.g. 
  the project file ".pysysproject" denotes the project root and project 
  specific information, whilst a test file ".pysystest" denotes a testcase 
  within the project, and contains meta data for the test. Support for the 
  previous name is maintained, though it should be noted that testcases 
  created with the 'pysys.py make' command will have the new naming 
  convention used.
- The windows installer has been updated to add shortcuts to the 
  uninstaller, and to create a separate directory for the inclusion of 
  project extensions. 
- The getInstanceCount method has been added to the 
  pysys.basetest.BaseTest class to reference count the number of named 
  processes started during a test run. The startProcess method of the 
  class adds a reference count to an internal dictionary 
  structure keyed on the displayName passed into the method to achieve 
  this. 
- The writeProcess method has been added to the pysys.basetest.BaseTest 
  class to provide a wrapper around the write method of the underlying 
  process helper class. This wrapper perform a check on the running status 
  of the process prior to the write, and performs additional logging to 
  the run.log to audit the write. 
- Fixed a bug in the replace method of the filereplace module, where the 
  method signature was missing the marker parameter
- Added support to the pysys project file to allow adding path locations 
  to the Python path. See the .pysysproject file in pysys-examples for 
  more detail.

0.3.1 to 0.3.2
--------------
- Release was superceded immediately by the 0.3.3 release. See release 
  notes for new features for 0.3.3 for more information.

0.3.0 to 0.3.1
--------------
- The process helper modules have been updated to allow the writing to the 
  stdin of a process via the write() method on the process handle. 
- Several bug fixes have been applied to the unix process helper module.
- The pysys-examples/internal directory has been added to the examples 
  module. This will contain internal testcases for self testing the pysys 
  framework. These have been included in the distribution as examples of 
  the use of the framework.
- The pysys project file has been added into the framework to allow the 
  setting of project specific constants within the application. The 
  project file should be written to the base location of the project, with 
  the filename .pysysproject. The location of this file denotes the root 
  location of the project. For an example of the file see 
  pysys-examples/.pysysproject. Any name value properties
  within the file will be set as data attributes of the pysys.Project 
  class, which is referenced in the pysys.constants module using the 
  variable PROJECT. 

0.2.2 to 0.3.0
--------------
- Updates to the epydoc output for documenting the classes and modules of 
  pysys
- Addition of the pysys.py module for printing, running and making new 
  testcase directory structures. This allows a single distributed script 
  to be used to perform all functionality available from the console. 
- Remove of the run method from the console launch helper.

0.2.1 to 0.2.2
--------------
- The suites element in the test descriptor has been renamed to groups. 
  This is to allow testcases in a single directory to be classified as a 
  single testsuite, and subsets thereof to be regarded as a group
- Minor bug fixes to the manual tester and process module

0.2.0 to 0.2.1
--------------
- The Manual Tester has been updated to support the <expectedresult> 
  element in the input xml file. This allows display of the expected 
  result for a manual step to be presented in the user interface. The 
  ability to optionally record a defect in the log output is also now 
  included.
- The createDescriptors method has been removed from the 
  pysys.launcher.console package and moved into pysys.launcher. This 
  allows the utility method to be used for other custom launchers.

0.1.7 to 0.2.0
--------------
- This release includes updates to the Python doc strings for automated 
  generation of epydoc using the Epydoc package 
  (http://epydoc.sourceforge.net). The installer now distributes the 
  generated epydoc in the site-packages/pysys-doc directory. For 
  windows installs a link to the epydoc and release notes is now added as 
  a link in the start menu items
- Added the setup() method to the BaseTest class to allow custom setup 
  actions to be performed prior to execution of a particular test case
- Fixed a bug where if the --type option was not supplied to 
  ConsoleMakeTestHelper as a command line option, the resulting descriptor 
  had type="None"

0.1.6 to 0.1.7
--------------
- The Manual Tester UI has been updated so that it can be resized, and is 
  easier to navigate through the tests. 
- The BaseRunner start method now takes an optional list of result writer 
  class instances to perform test audit logging at the end of a test 
  cycle. This allows custom result writers to be passed to the runner to, 
  for example, write the results to a database, proprietary system etc
  
0.1.5 to 0.1.6
--------------
- Added the ability to differentiate between automated and manual 
  testcases using the test attribute to the pysystest element in the 
  testcase descriptor. If the attribute is not present the test will be 
  assumed to be an automated test. The runTest and printTest launch 
  helpers allow you to differentiate between automated and manual 
  tests using the --type command line argument. For more information see 
  the examples in pysys-examples

0.1.4 to 0.1.5
--------------
- Added support for the requirements traceability. This includes printing 
  requirements covered by a set of testcases, and running testcases which 
  cover a particular requirement id

0.1.3 to 0.1.4
--------------
- Added the ConsoleMakeTestHelper class to pysys.launcher.console. This 
  facilitates the creation of new testcase structures from the command 
  line. Updated pysys-examples/fibonacci to demonstrate the use of the 
  utility class 
Source: README, updated 2013-12-11