Module Expr Str Import alias Import alias Import alias Import alias Import alias Import alias Import alias ImportFrom alias ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults NameLoad body Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr If CompareIs NameLoad NameLoad body Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr orelse Assign AttributeStore NameLoad attr NameLoad TryExcept body Assign AttributeStore NameLoad attr AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr handlers ExceptHandler type AttributeLoad NameLoad attr body Print Str Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Str Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr Print Str Assign AttributeStore NameLoad attr AttributeLoad Call NameLoad AttributeLoad NameLoad attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr TryExcept body Assign NameStore Call AttributeLoad NameLoad attr Str Str Assign NameStore Call AttributeLoad NameLoad attr Str NameLoad handlers ExceptHandler type AttributeLoad NameLoad attr body Raise Call NameLoad Str Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr TryExcept body Assign NameStore Call AttributeLoad NameLoad attr Str Str handlers ExceptHandler type AttributeLoad NameLoad attr body Raise Call NameLoad Str Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr TryExcept body Assign NameStore Call AttributeLoad NameLoad attr BinOpMod Str NameLoad Expr Call AttributeLoad NameLoad attr BinOpMod Str TupleLoad NameLoad NameLoad Print AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call AttributeLoad NameLoad attr ListLoad AttributeLoad NameLoad attr AttributeLoad NameLoad attr Print NameLoad AttributeLoad NameLoad attr handlers ExceptHandler type AttributeLoad NameLoad attr body Print Str Expr Call AttributeLoad NameLoad attr Num decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Dict Str Str NameLoad NameLoad Assign NameStore SubscriptLoad SubscriptLoad NameLoad Index Num Index Str Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Return SubscriptLoad NameLoad Index Str decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Dict Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad NameLoad attr Str Call AttributeLoad NameLoad attr Assign NameStore SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Index Str Assign NameStore BinOpAdd BinOpAdd BinOpAdd BinOpAdd NameLoad Str Str Str NameLoad Assign NameStore SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Index Str Assign NameStore SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Index Str Assign NameStore SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Index Str Assign NameStore SubscriptLoad SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Index Num Index Str Assign NameStore NameLoad Assign NameStore Dict Str Str Str Str Str Str Str NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore Dict Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad TryExcept body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign NameStore SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Index Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad Return NameLoad handlers ExceptHandler type NameLoad name NameStore body Raise Call NameLoad BinOpMod Str TupleLoad Call NameLoad NameLoad Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad If BoolOpOr CompareEq Call NameLoad NameLoad NameLoad CompareEq Call NameLoad NameLoad NameLoad body If CompareIn Call NameLoad NameLoad NameLoad body Assign NameStore Num orelse Assign NameStore Num orelse If CompareEq Call NameLoad NameLoad NameLoad body Assign NameStore ListComp NameLoad comprehension NameStore NameLoad CompareNotIn Call NameLoad NameLoad NameLoad Assign NameStore Call NameLoad NameLoad orelse Pass If CompareGt NameLoad Num body TryExcept body Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad NameLoad handlers ExceptHandler type NameLoad name NameStore body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad orelse Pass decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str TryExcept body Return Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad handlers ExceptHandler body Raise Call NameLoad BinOpMod Str Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str TryExcept body Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Dict Str NameLoad handlers ExceptHandler body Raise Call NameLoad Str decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Assign NameStore ListComp NameLoad comprehension NameStore NameLoad CompareIn NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad If CompareEq Call NameLoad NameLoad Num body TryExcept body Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Dict Str Str Str NameLoad Num Str handlers ExceptHandler body Raise Call NameLoad Str orelse Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad orelse For NameStore NameLoad body TryExcept body Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Dict Str Str Str Str NameLoad Num Str NameLoad handlers ExceptHandler body Raise Call NameLoad Str orelse Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad Assign NameStore Call NameLoad Call NameLoad BinOpAdd NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad If CompareEq Call NameLoad NameLoad Num body TryExcept body Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Dict Str Str Str NameLoad Num Str handlers ExceptHandler body Raise Call NameLoad Str orelse Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad orelse For NameStore NameLoad body TryExcept body Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Dict Str Str Str Str NameLoad Num Str Call AttributeLoad NameLoad attr handlers ExceptHandler body Raise Call NameLoad Str orelse Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad Assign NameStore Call NameLoad Call NameLoad BinOpAdd NameLoad NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore ListLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr NameLoad Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Dict Str Str NameLoad NameLoad Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam NameParam NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore ListLoad If NameLoad body If CompareEq NameLoad Str body If CompareEq NameLoad Str body Print Str Expr Call AttributeLoad NameLoad attr Num orelse Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Print Str BinOpMod Call AttributeLoad Str attr Num Str NameLoad Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad orelse Assign NameStore Call AttributeLoad NameLoad attr NameLoad Assign NameStore ListComp SubscriptLoad NameLoad Index Str comprehension NameStore NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Assign NameStore ListComp NameLoad comprehension NameStore NameLoad CompareIn NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr NameLoad Str Assign NameStore Call NameLoad BinOpBitAnd Call NameLoad NameLoad Call NameLoad NameLoad Print Str BinOpMod Call AttributeLoad Str attr Num Str NameLoad Print Str orelse If CompareEq NameLoad Str body Print Str Expr Call AttributeLoad NameLoad attr Num orelse Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad NameLoad Return TupleLoad Call NameLoad NameLoad NameLoad decorator_list decorator_list ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return Call NameLoad AttributeLoad NameLoad attr decorator_list decorator_list If CompareEq NameLoad Str body Assign NameStore Call NameLoad Assign NameStore Num Assign NameStore Num Assign NameStore Num Assign NameStore Num Assign NameStore Str
N/A N/A 
RobotX TCMS Client

TCMS means Test Case Management System.

Currently, RobotX uses Nitrate as default TCMS.
If your TCMS is not Nitrate(such as TestLink)
you need write a new client and replace the default TCMS client of RobotX.

Author: Xin Gao <fdumpling@gmail.com>
 N/A os N/A sys N/A time N/A logging N/A pexpect N/A kerberos N/A ConfigParser nitrate NitrateKerbXmlrpc TCMS N/A object N/A N/A TCMS client
     __init__ N/A N/A self tcms_url N/A None N/A N/A N/A self log N/A N/A logging getLogger N/A N/A tcms_url None N/A N/A N/A self tcms_url N/A N/A self get_tcms_url N/A N/A N/A self tcms_url tcms_url N/A N/A N/A N/A self server N/A N/A NitrateKerbXmlrpc N/A self tcms_url server N/A N/A N/A N/A kerberos GSSError N/A N/A Nitrate login ... N/A N/A self user N/A N/A N/A os environ get TCMS_LOGIN_NAME N/A N/A self passwd N/A N/A N/A os environ get TCMS_LOGIN_PWD N/A N/A N/A self kinit N/A self user N/A self passwd N/A Successfully Kinit N/A N/A self server N/A N/A NitrateKerbXmlrpc N/A self tcms_url server N/A _config_setting N/A N/A self N/A N/A N/A for getting conf file value N/A config N/A N/A ConfigParser ConfigParser N/A N/A N/A config read /etc/tcms.conf N/A config N/A get_tcms_url N/A N/A self N/A N/A N/A As subject~ N/A config N/A N/A self _config_setting N/A N/A N/A env N/A N/A config get TCMS environment N/A url N/A N/A config get TCMS env N/A N/A N/A N/A ConfigParser NoSectionError N/A N/A N/A TCMSException ERROR[TCMS]':                   pls check/update /etc/tcms.conf file N/A url N/A get_domain N/A N/A self N/A N/A N/A As subject~ N/A config N/A N/A self _config_setting N/A N/A N/A domain_name N/A N/A config get TCMS domain N/A N/A N/A N/A ConfigParser NoSectionError N/A N/A N/A TCMSException ERROR[TCMS]':                   pls check/update /etc/tcms.conf file N/A domain_name N/A kinit N/A N/A self user passwd N/A N/A N/A Do kinit ops for the kerberos authentication N/A domain_name N/A N/A self get_domain N/A N/A N/A kinit N/A N/A pexpect spawn N/A kinit %s user N/A N/A N/A kinit expect N/A Password for %s@%s: N/A user domain_name N/A N/A kinit after N/A N/A N/A kinit sendline passwd N/A index N/A N/A kinit expect N/A N/A pexpect EOF N/A pexpect TIMEOUT N/A index N/A kinit before N/A N/A N/A N/A pexpect EOF N/A N/A 
Failed to login, you need Do kinit firstly!!! N/A N/A N/A sys exit 255 N/A get_caserun_id N/A N/A self run_id case_id N/A N/A N/A for getting case run id
         N/A caseruns N/A N/A N/A N/A self server TestCaseRun filter N/A run__run_id case__case_id run_id case_id N/A caserun_id N/A N/A caseruns N/A 0 N/A case_run_id N/A caserun_id N/A get_caserun_status_id N/A N/A self status N/A N/A N/A for getting case run status id.
        status = {
            'IDEL': 1,
            'PASSED': 2,
            'FAILED': 3,
            'RUNNING': 4,
            'PAUSED': 5,
            'BLOCKED': 6,
            'ERROR': 7,
            'WAIVED': 8,
        }
         N/A caserun_status N/A N/A N/A N/A self server TestCaseRun check_case_run_status status N/A N/A caserun_status N/A id N/A update_caserun_status N/A N/A self caserun_id caserun_status N/A N/A N/A for updating case-run status
         N/A caserun_status_id N/A N/A self get_caserun_status_id caserun_status N/A N/A N/A N/A N/A self server TestCaseRun update caserun_id N/A case_run_status caserun_status_id N/A update_caserun_log N/A N/A self caserun_id caserun_log N/A N/A N/A for updating case-run log to comment
         N/A N/A N/A N/A N/A self server TestCaseRun add_comment caserun_id caserun_log N/A get_run_params N/A N/A self plan_id case_ids N/A N/A N/A get params for creating new run.
         N/A create_time N/A N/A time strftime %Y-%m-%d %X N/A N/A time localtime N/A product_name N/A N/A N/A N/A N/A self server TestPlan get plan_id N/A product N/A run_summary N/A N/A N/A N/A product_name _ automation _ create_time N/A run_manager N/A N/A N/A N/A N/A self server TestPlan get plan_id N/A owner_id N/A run_product N/A N/A N/A N/A N/A self server TestPlan get plan_id N/A product_id N/A run_product_version N/A N/A N/A N/A N/A self server TestPlan get plan_id N/A product_version_id N/A run_build N/A N/A N/A N/A N/A N/A self server Product get_builds run_product N/A 0 N/A build_id N/A run_plan_id plan_id N/A run_values N/A summary manager product product_version build plan case run_summary run_manager run_product run_product_version run_build run_plan_id case_ids N/A run_values N/A create_run N/A N/A self plan_id tags priorities N/A N/A N/A create new test run in TCMS
         N/A run_values N/A N/A case_ids N/A N/A self get_valid_cases plan_id tags priorities N/A run_values N/A N/A self get_run_params plan_id case_ids N/A N/A N/A N/A N/A N/A self log debug Create run ... N/A run_id N/A N/A N/A N/A N/A self server TestRun create run_values N/A run_id N/A N/A N/A N/A self log info N/A Run %s was successfully created. run_id N/A run_id N/A N/A N/A Exception N/A e N/A N/A N/A TCMSException N/A ERROR[TCMS]: Couldn't create TestRun(%s) ::                 %s N/A N/A str run_values N/A str e N/A add_cases_to_run N/A N/A self cases_ids run_id N/A N/A N/A add case
         N/A exist_cases N/A N/A N/A N/A self server TestRun get_test_cases run_id N/A exist_cases_ids N/A N/A case N/A case_id N/A case exist_cases N/A N/A N/A N/A type cases_ids str N/A N/A type cases_ids int N/A N/A N/A N/A int cases_ids exist_cases_ids N/A N/A new_caserun_count 0 N/A N/A new_caserun_count 1 N/A N/A N/A N/A type cases_ids list N/A N/A new_cases_ids N/A id N/A id cases_ids N/A N/A int id exist_cases_ids N/A new_caserun_count N/A len new_cases_ids N/A N/A N/A N/A new_caserun_count 0 N/A N/A N/A N/A N/A N/A N/A N/A self server TestCase add_to_run cases_ids run_id N/A N/A N/A Exception N/A error_info N/A N/A N/A N/A N/A self log warning N/A detail info: 
 %s error_info N/A N/A N/A get_case_from_run N/A N/A self run_id N/A N/A N/A for getting case list from run.
         N/A N/A N/A N/A N/A N/A N/A self server TestRun get_test_cases run_id N/A N/A N/A N/A N/A TCMSException N/A ERROR[TCMS]':                 Failed to get testcases for testrun %s N/A str run_id N/A update_run_status N/A N/A self run_id status_num N/A N/A N/A for update run status to FINISHED or RUNNING
         N/A N/A N/A N/A N/A N/A N/A self server TestRun update run_id N/A status status_num N/A N/A N/A N/A N/A TCMSException ERROR[TCMS]': Failed to update run status N/A get_valid_cases N/A N/A self plan_id tags priorities N/A N/A N/A for get case ids via plan id and tags
         N/A cases N/A N/A tags_cases N/A N/A self get_valid_cases_via_tags plan_id tags N/A priorities_cases N/A N/A self get_valid_cases_via_priorities plan_id priorities N/A cases N/A case N/A case tags_cases N/A case priorities_cases N/A cases N/A get_valid_cases_via_tags N/A N/A self plan_id tags N/A N/A N/A for getting case ids via plan id and tags
         N/A cases N/A N/A N/A N/A len tags 0 N/A N/A N/A N/A the_cases N/A N/A N/A N/A self server TestCase filter N/A plan__plan_id is_automated case_status__name plan_id 1 CONFIRMED N/A N/A N/A N/A N/A TCMSException ERROR[TCMS]':                         Failed to filter case N/A N/A cases N/A N/A case N/A case_id N/A case the_cases N/A N/A tag tags N/A N/A N/A N/A the_cases N/A N/A N/A N/A self server TestCase filter N/A plan__plan_id is_automated case_status__name tag__name plan_id 1 CONFIRMED tag N/A N/A N/A N/A N/A TCMSException ERROR[TCMS]':                             Failed to filter case N/A N/A cases1 N/A N/A case N/A case_id N/A case the_cases N/A cases N/A list N/A set N/A cases1 cases N/A cases N/A get_valid_cases_via_priorities N/A N/A self plan_id priorities N/A N/A N/A for getting case ids via plan id and priorities
         N/A cases N/A N/A N/A N/A len priorities 0 N/A N/A N/A N/A the_cases N/A N/A N/A N/A self server TestCase filter N/A plan__plan_id is_automated case_status__name plan_id 1 CONFIRMED N/A N/A N/A N/A N/A TCMSException ERROR[TCMS]':                         Failed to filter case N/A N/A cases N/A N/A case N/A case_id N/A case the_cases N/A N/A priority priorities N/A N/A N/A N/A the_cases N/A N/A N/A N/A self server TestCase filter N/A plan__plan_id is_automated case_status__name priority__value plan_id 1 CONFIRMED N/A N/A priority upper N/A N/A N/A N/A N/A TCMSException ERROR[TCMS]':                             Failed to filter case N/A N/A cases1 N/A N/A case N/A case_id N/A case the_cases N/A cases N/A list N/A set N/A cases1 cases N/A cases N/A get_plan_case_ids N/A N/A self plan_id N/A N/A N/A return case id list via plan id
         N/A case_ids N/A N/A cases N/A N/A N/A N/A self server TestPlan get_test_cases plan_id N/A case_ids N/A N/A case N/A case_id N/A case cases N/A case_ids N/A filter_case_via_status N/A N/A self run_id status N/A N/A N/A filter cases via case-run status from run
         N/A case_ids N/A N/A cases N/A N/A N/A N/A self server TestCaseRun filter N/A run__run_id case_run_status__name run_id status N/A case_ids N/A N/A case N/A case_id N/A case cases N/A case_ids N/A get_case_ids N/A N/A self plan_id run_id tags priorities is_tcms N/A N/A N/A return specified and automated case ids
         N/A case_ids N/A N/A is_tcms N/A N/A N/A run_id N/A N/A N/A plan_id N/A N/A Plan ID is required option!!! N/A N/A N/A sys exit 255 N/A N/A run_id N/A N/A self create_run plan_id tags priorities N/A N/A N/A N/A New Run ID: %s center 70 * run_id N/A cases N/A N/A self get_case_from_run run_id N/A case_ids N/A N/A case N/A case_id N/A case cases N/A N/A cases_in_run N/A N/A self get_case_from_run run_id N/A case_ids_in_run N/A N/A case N/A case_id N/A case cases_in_run N/A valid_case_ids N/A N/A self get_valid_cases plan_id tags priorities N/A case_ids N/A id N/A id case_ids_in_run N/A id valid_case_ids N/A idel_case_ids N/A N/A self filter_case_via_status run_id IDLE N/A case_ids N/A list N/A N/A set case_ids N/A set idel_case_ids N/A N/A N/A N/A Existing Run ID: %s center 70 * run_id N/A N/A N/A N/A plan_id N/A N/A Plan ID is required option!!! N/A N/A N/A sys exit 255 N/A N/A case_ids N/A N/A self get_valid_cases plan_id tags priorities N/A N/A N/A str run_id case_ids N/A N/A TCMSException N/A Exception N/A N/A General tcms exception __init__ N/A N/A self msg N/A N/A N/A N/A self msg msg N/A __str__ N/A N/A self N/A N/A N/A N/A repr N/A self msg N/A N/A N/A N/A __name__ __main__ N/A N/A tcms N/A TCMS N/A run_id 52489 N/A case_id 154226 N/A caserun_id 1824331 N/A plan_id 8243 N/A caserun_log 
    Traceback (most recent call last):
    File "/home/xin/tmp/robotdemo/CalculatorLibrary.py",
    line 26, in push_button
    self._result = self._calc.push(button)
    File "/home/xin/tmp/robotdemo/calculator.py", line 9, in push
    raise CalculationError("Invalid button '%s'." % button)
    