什么软件可以测试英雄联盟,揭秘英雄联盟的自动化测试

"""

Name: BioArcaneBarrage_DamageDealt

Description: Verifies the damage modifications from Bio-Arcane Barrage

Verifies:

- KogMaw deals less damage to non-lane minions

- KogMaw deals percentile magic damage

- KogMaw deals normal damage to lane minions

"""

from KogMawAbilityTest import KogMawAbilityTest

from Drivers.LOLGame.LOLGameUtils import Enumerations

import KogMawStats

class BioArcaneBarrage_DamageDealt(KogMawAbilityTest):

def __init__(self, championAbilities):

super(BioArcaneBarrage_DamageDealt, self).__init__(championAbilities)

self.ability = 'Bio-Arcane Barrage'

self.slot = KogMawStats.W_SLOT

self.details = 'Kog\'Maw deals reduced base-damage to non-minions with additional percentile damage'

self.playerLocation = Enumerations.SRULocations.MID_LANE

self.enemyAnnieLocation = Enumerations.SRULocations.MID_LANE.angularOffsetDegrees(45, 200)

self.enemyMinionLocation = Enumerations.SRULocations.MID_LANE.angularOffsetDegrees(45, 400)

def setup(self):

super(BioArcaneBarrage_DamageDealt, self).setup()

self.enemyAnnie = self.spawnEnemyAnnie(self.enemyAnnieLocation)

self.enemyMinion = self.spawnEnemyMinion(self.enemyMinionLocation)

self.teleport(self.player, self.playerLocation)

self.issueStopCommand(self.player)

def execute(self):

self.takeSnapshot('preCast')

self.castSpellOnTarget(self.player, self.slot, self.player)

self.champAttackOnce(self.player, self.enemyAnnie)

self.takeRecentDeathRecapSnap(self.enemyAnnie, "annieRecap")

self.resetCooldowns(self.player)

self.castSpellOnTarget(self.player, self.slot, self.player)

self.champAttackOnce(self.player, self.enemyMinion)

self.takeSnapshot('minionRecap')

self.teleport(self.player, Enumerations.SRULocations.ORDER_FOUNTAIN)

def verify(self):

# Verify that enemy Annie is taking the correct amount of damage.

annieAutoDamageEvents = self.getDeathRecapEvents(self.player, "Attack", "annieRecap")

annieAutoDamage = 0

for event in annieAutoDamageEvents:

annieAutoDamage += event.PhysicalDamage

annieSpellDamageEvents = self.getDeathRecapEvents(self.player, "Spell", "annieRecap", scriptName=KogMawStats.W_MAGIC_DAMAGE_SCRIPT_NAME)

annieSpellDamage = 0

for event in annieSpellDamageEvents:

annieSpellDamage = event.MagicDamage

AD = self.getStat(self.player, "AttackDamageItem")

expectedPercentile = (KogMawStats.W_AD_DAMAGE_RATIO * AD)/100

annieTotalHealth = self.getStat(self.enemyAnnie, "MaxHealth")

expectedPercentileDamage = self.asPostResistDamage(self.enemyAnnie, expectedPercentile * annieTotalHealth, 'MagicResist', snapshot='preCast')

self.assertInRange(annieSpellDamage, expectedPercentileDamage, expectedPercentileDamage * .1, "{} magic damage dealt. Expected ~{}".format(annieSpellDamage, expectedPercentileDamage))

expectedPhysicalDamage = self.asPostResistDamage(self.enemyAnnie, KogMawStats.W_NON_MINION_DAMAGE_RATIO * AD, 'Armor', snapshot='preCast')

self.assertInRange(annieAutoDamage, expectedPhysicalDamage, expectedPhysicalDamage * .1, "{} physical damage dealt. Expected ~{}".format(annieAutoDamage, expectedPhysicalDamage))

# Verify that enemy minion is taking the correct amount of damage.

AD = self.getStat(self.player, "AttackDamageItem")

minionExpectedPhysicalDamage = self.asPostResistDamage(self.enemyMinion, AD, 'Armor', snapshot='preCast')

expectedPercentile = (KogMawStats.W_AD_DAMAGE_RATIO * AD)/100

minionTotalHealth = self.getStat(self.enemyMinion, "MaxHealth")

minionExpectedMagicDamage = self.asPostResistDamage(self.enemyMinion, expectedPercentile * minionTotalHealth, 'MagicResist', snapshot='preCast')

expectedDamage = minionExpectedMagicDamage + minionExpectedPhysicalDamage

actualDamage = self.getDamageTaken(self.enemyMinion, 'preCast', 'minionRecap')

self.assertInRange(actualDamage, expectedDamage, 1, "{} total physical and magic damage dealt. Expected ~{}".format(annieAutoDamage, expectedDamage))

def teardown(self):

self.destroy(self.enemyAnnie)

self.destroy(self.enemyMinion)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值