2017-01-03 7 views
1

Ich kann erfolgreich User Story-Informationen mit meinem Python-Code erhalten; Ich möchte jedoch eine bestimmte Zeichenfolge ersetzen, die sich in den Details und dem Namen der Benutzerstory befindet. Zum Beispiel könnte die Zeichenfolge $ projectName sein und ich möchte sie durch einen vom Benutzer eingegebenen Wert ersetzen.Ersetzen von Zeichenfolgen gegen Vorlagengeschichten in Rally

Gibt es etwas, das dabei hilft zu codieren oder gibt es ein funktionierendes Beispiel? Ich stehe fest, weil dies nicht unbedingt eine zu bearbeitende Datei ist, und die Hierarchie-Ausgabe erzeugt auch einen Block, damit ich etwas entwickeln kann, das funktioniert.

Hier ist mein Code, um die Daten zum Ziehen:

#!/usr/bin/env python 
import sys 
from pyral import Rally, rallyWorkset 

options = [arg for arg in sys.argv[1:] if arg.startswith('--')] 
args = [arg for arg in sys.argv[1:] if arg not in options] 
server, username, password, apikey, workspace, project = rallyWorkset(options) 
if apikey: 
     rally = Rally(server, apikey=apikey, workspace=workspace, project=project) 
else: 
     rally = Rally(server, username=username, password=password, workspace=workspace, project=project) 
response = rally.get ('UserStory', fetch=True, query='Name contains "$projecttest"') 
for story1 in response: 
    print story1.details() 

Hier ist die Ausgabe ich, geschrubbt, natürlich:

HierarchicalRequirement 
    oid      : 81284473268 
    ref      : hierarchicalrequirement/81284473268 
    ObjectID     : 81284473268 
    ObjectUUID    : 67c952b4-e414-4759-a8c5-d7d7543ba98d 
    _ref      : https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement/81284473268 
    _CreatedAt    : Dec 14, 2016 
    _hydrated     : True 
    Name      : Robert - test - pyRal - $projecttest 
    Subscription    : <<SCRUBBED>> 
    Workspace     : Workspace.ref   (OID SCRUBBED) 
    FormattedID    : US47008 

    AcceptedDate    : None 
    Attachments    : [] 
    Blocked     : False 
    BlockedReason    : None 
    Blocker     : None 
    Changesets    : [] 
    Children     : [] 
    CreationDate    : 2016-12-14T18:21:03.663Z 
    DefectStatus    : NONE 
    Defects     : [] 
    Description    : <b>Description</b><div><br /><div>Some format here</div><div><br /></div><div><b>Outcome</b></div><div><b><br /></b></div><div>Some outcome here</div></div> 
    DirectChildrenCount  : 0 
    Discussion    : [] 
    DisplayColor    : #21a2e0 
    DragAndDropRank   : O~zbf~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    Expedite     : False 
    Feature     : None 
    HasParent     : False 
    InProgressDate   : None 
    Iteration     : None 
    LastBuild     : None 
    LastRun     : None 
    LastUpdateDate   : 2016-12-19T22:42:48.173Z 
    LatestDiscussionAgeInMinutes : None 
    Milestones    : [] 
    Notes      : 
    Owner      : User.ref (OID SCRUBBED) 
    Package     : None 
    Parent     : None 
    PassingTestCaseCount  : 0 
    PlanEstimate    : None 
    PortfolioItem    : None 
    Predecessors    : [] 
    Project     : Project.ref     (OID SCRUBBED) 
    Ready      : False 
    Recycled     : False 
    Release     : None 
    ScheduleState    : Ungroomed 
    ScheduleStatePrefix  : U 
    Successors    : [] 
    Tags      : [] 
    TaskActualTotal   : 0.0 
    TaskEstimateTotal   : 0.0 
    TaskRemainingTotal  : 0.0 
    TaskStatus    : NONE 
    Tasks      : [] 
    TestCaseCount    : 0 
    TestCaseStatus   : NONE 
    TestCases     : [] 
    VersionId     : 4 
    __collection_ref_for_RevisionHistory : SCRUBBED 
    _refObjectUUID   : SCRUBBED 
    AcceptanceCriteria  : None 
    IGNOREAcceptanceCriteria : None 
    IdeaURL     : <pyral.entity.CustomField object at 0x7f1afb79a190> 
    IdeaVotes     : None 
    JIRAPriority    : None 
    JiraKey     : None 
    JiraLink     : None 
    KanbanState    : None 
    Priority     : None 
    ReleaseNote    : None 
    RequestedDate    : None 
    SNRequest     : None 
    Submitter     : None 
    TestRailPlanID   : None 
    TrackingState    : None 

======== ==========================================

So mit PyRal müsste ich jedem Userstory, den dieser Code zieht, nur auf den Zeilen w ein Update schicken hich enthält die Zeichenfolge; Allerdings müsste ich irgendwie jede FormattedID speichern: und das zugehörige Name: -Feld, um zu aktualisieren, das ist, wo ich feststecke, auf wie man das tatsächlich speichert, damit es iteriert und aktualisiert werden kann.

+0

Wenn Sie nur Dinge wie $ projectName in einer Zeichenfolge ersetzen möchten, ist dies keine schwierige Aufgabe, aber Sie haben uns keinen Versuch gezeigt. Versuchen Sie es mit regulären Ausdrücken und dem 're' Modul. – blacksite

+0

Sorry dafür, ich hatte es eilig, ich habe meinen Beitrag aktualisiert. –

Antwort

0

Sie könnten Template Strings verwenden, die genau tun, was Sie wollen, mit einem env-Variable wie Template-Token begrenzen:

from string import Template 
s = Template('this is $projectName') 
s.substitute(projectName='THE_PROJECT') 

Ergebnisse in:

'this is THE_PROJECT' 

https://docs.python.org/3/library/string.html

Alternative Methode, wenn Sie projectName in geschweiften Klammern umbrechen, verwendet format:

+0

Danke! Ich dachte darüber nach; Mit PyRal muss ich jedoch einen separaten Aufruf durchführen, um den Datensatz zu aktualisieren. Daher müsste ich die FörmattedID und den Namen speichern und dann nur die Zeichenfolge innerhalb des Namens bearbeiten und das Update auf die entsprechende FormatedID (Story) anwenden. –

Verwandte Themen